1. Unit Circle
The unit circle is a name for the circle that centered at (0, 0) with a radius of 1. (This circle is very important in trigonometry, which you will study in MATH 142!)
- Write the equation of the unit circle:
-
Use the equation to determine whether the following points lie on the unit circle:
-
\[\left(\frac{3}{5},-\frac{4}{5}\right)\]
Here we plug \(\left(\frac{3}{5},-\frac{4}{5}\right)\) into the \(x\) and \(y\) values of the unit circle equation \((\color{red}{x}\\ -0)^2+(\color{red}{y}\\ -0)^2=1\) as follows: \[ \left(\color{red}{\frac{3}{5}}\\ -0\right)^2 + \left(\color{red}{-\frac{4}{5}}\\ -0 \right)^2 ~ \stackrel{?}{=} 1 \] Next, because we are subtracting \(\color{red}{0}\\ \) from \(\frac{3}{5}\) and \(-\frac{4}{5}\) are essentially taking nothing away from either: \[ \left(\frac{3}{5}\ \color{red}{-\ 0}\\\right)^2 + \left(-\frac{4}{5}\ \color{red}{-\ 0}\\ \right)^2 ~ \stackrel{?}{=} 1 \] So we remove the \(\color{red}{-\ 0}\\ \) and leave \(\color{red}{\frac{3}{5}}\\ \) and \(\color{red}{\frac{3}{5}}\\ \): \[ \left(\color{red}{\frac{3}{5}}\\ \right)^2 + \left(\color{red}{-\frac{4}{5}}\\ \right)^2 ~ \stackrel{?}{=} 1 \] We square both \(\color{red}{\frac{3}{5}}\\ \) and \(\color{red}{-\frac{4}{5}}\\ \): \[ \color{red}{\left(\frac{3}{5}\right)\left(\frac{3}{5}\right)}\\ + \color{red}{\left(-\frac{4}{5}\right)\left(-\frac{4}{5}\right)}\\ \stackrel{?}{=} 1 \] Squaring \(\color{red}{\frac{3}{5}}\\ \) gives us \(\color{red}{\frac{9}{25}}\\ \), and squaring \(\color{red}{-\frac{4}{5}}\\ \) gives us positive \(\color{red}{\frac{16}{25}}\\ \): \[ \color{red}{\frac{9}{25}}\\ + \color{red}{\frac{16}{25}}\\ \stackrel{?}{=} 1 \] And then finally, we simply add the numerators \(\color{red}{9 + 16}\\ \) which does equal \(\color{red}{1}\\ \): \[ \color{red}{\frac{25}{25}}\\ \stackrel{?}{=} 1 \] With that we get \(\color{red}{1}\\ \) equals 1: \[ \color{red}{1}\\ = 1 \] And we can therefore conclude that the points \(\left(\frac{3}{5}, -\frac{4}{5}\right) \) do indeed lie on the unit circle \( (x-0)^2+(y-0)^2=1\ \).
-
\[\left(\frac{1}{2},\frac{\sqrt{3}}{2}\right)\]
Here we plug \( \left(\frac{1}{2},\frac{\sqrt{3}}{2}\right) \) into the \(x\) and \(y\) values of the unit circle equation \((\color{red}{x}\\ -0)^2+(\color{red}{y}\\ -0)^2=1\) as follows: \[ \left(\color{red}{\frac{1}{2}}\\ -0\right)^2 + \left(\color{red}{\frac{\sqrt{3}}{2}}\\ -0\right)^2 ~ \stackrel{?}{=} 1 \] Next, because we are subtracting \(\color{red}{0}\) from \(\frac{1}{2}\) and \(\frac{\sqrt{3}}{2}\) we are essentially taking nothing away from either: \[ \left(\frac{1}{2}\ \color{red}{-\ 0}\\ \right)^2 + \left(\frac{\sqrt{3}}{2}\ \color{red}{-\ 0}\\ \right)^2 ~ \stackrel{?}{=} 1 \] So we remove the \(-0\) and leave \( \color{red}{\frac{1}{2}}\\ \) and \( \color{red}{\frac{\sqrt{3}}{2}}\\ \): \[ \left( \color{red}{\frac{1}{2}}\\ \right)^2 + \left( \color{red}{\frac{\sqrt{3}}{2}}\\ \right)^2 ~ \stackrel{?}{=} 1 \] Next we square \(\color{red}{\frac{1}{2}}\\ \): \[ \color{red}{ \left(\frac{1}{2}\right)\left(\frac{1}{2}\right)}\\ + \left(\frac{\sqrt{3}}{2}\right)^2 ~ \stackrel{?}{=} 1 \] Squaring \(\color{red}{\frac{1}{2}}\\ \) gives us \(\color{red}{\frac{1}{4}}\\ \) \[ \color{red}{ \left(\frac{1}{4}\right)}\\ + \left(\frac{\sqrt{3}}{2}\right)^2 ~ \stackrel{?}{=} 1 \] Now we apply the power rule \( \color{red}{(ab)^n = a^n\\b^n} \) to distribute the exponent \( \color{red}{\left(\frac{\sqrt{3}}{2}\right)^2}\\ \): \[ \left(\frac{1}{4}\right) + \frac{\sqrt{3}\color{red}{^2}\\ }{2\color{red}{^2}\\ } \stackrel{?}{=} 1 \] And because we are squaring a square root we simply remove the radical sign and are left with \(\color{red}{3}\\ \) in the numerator: \[ \left(\frac{1}{4}\right) + \frac{\color{red}{3}\\ }{2^2} \stackrel{?}{=} 1 \] Now squaring the denominator \(\color{red}{2^2}\\ \) gives us \(\color{red}{4}\\ \) \[ \left(\frac{1}{4}\right) + \frac{3}{\color{red}{4}\\ } \stackrel{?}{=} 1 \] Finally, we add the numerators \( \color{red}{1 + 3}\\ \) we end up with \( \color{red}{\frac{4}{4}}\\ \): \[ \color{red}{\frac{4}{4}}\\ \stackrel{?}{=} 1 \] Which is the same as \( \color{red}{1}\\ \), so therefore \( \color{red}{1}\\ \) equals \( \color{red}{1}\\ \): \[ \color{red}{1}\\ = 1 \] Therefore we can conclude that the points \(\left(\frac{1}{2},\frac{\sqrt{3}}{2}\right) \) do lie on the unit circle \( (x-0)^2+(y-0)^2=1\ \).
-
\[\left(-\frac{1}{3},\frac{2}{3}\right)\]
Here we plug \(\left(-\frac{1}{3},\frac{2}{3}\right) \) into the \(x\) and \(y\) values of the unit circle equation \((\color{red}{x}\\ -0)^2+(\color{red}{y}\\ -0)^2=1\) as follows: \[ \left(\color{red}{-\frac{1}{3}}\\ -0\right)^2 + \left(\color{red}{\frac{2}{3}}\\ -0\right)^2 ~ \stackrel{?}{=} 1 \] Next, because we are subtracting \(\color{red}{0}\) from \( -\frac{1}{3} \) and \( \frac{2}{3} \) we are essentially taking nothing away from either: \[ \left(-\frac{1}{3}\ \color{red}{-\ 0}\\ \right)^2 + \left(\frac{2}{3}\ \color{red}{-\ 0}\\ \right)^2 ~ \stackrel{?}{=} 1 \] So we remove the \(-0\) and leave \( \color{red}{-\frac{1}{3}}\\ \) and \( \color{red}{\frac{2}{3}}\\ \): \[ \left(\color{red}{-\frac{1}{3}}\\ \right)^2 + \left(\color{red}{\frac{2}{3}}\\ \right)^2 ~ \stackrel{?}{=} 1 \] Square both \( \color{red}{-\frac{1}{3}}\\ \) and \( \color{red}{\frac{2}{3}}\\ \): \[ \color{red}{\left(-\frac{1}{3}\right)\left(-\frac{1}{3}\right)}\\ + \color{red}{\left(\frac{2}{3}\right)\left(\frac{2}{3}\right)}\\ \stackrel{?}{=} 1 \] Squaring \( \color{red}{-\frac{1}{3}}\\ \) gives us positive \( \color{red}{\frac{1}{9}}\\ \), and squaring \( \color{red}{ \frac{2}{3} }\\ \) gives us \( \color{red}{ \frac{4}{9} }\\ \): \[ \color{red}{\frac{1}{9}}\\ + \color{red}{\frac{4}{9}}\\ \stackrel{?}{=} 1 \] And finally, we add the numerators \( \color{red}{1 + 4}\\ \) we end up with \( \color{red}{\frac{5}{9}}\\ \) which does not equal 1: \[ \frac{5}{9} \neq 1 \] We can therefore conclude that the points \(\left(-\frac{1}{3},\frac{2}{3}\right) \) do not lie on the unit circle \( (x-0)^2+(y-0)^2=1\ \).
-
\[\left(-\frac{\sqrt{2}}{2},-\frac{\sqrt{2}}{2}\right)\]
Here we plug \(\left(-\frac{\sqrt{2}}{2},-\frac{\sqrt{2}}{2}\right)\) into the \(x\) and \(y\) values of the unit circle equation \((\color{red}{x}\\ -0)^2+(\color{red}{y}\\ -0)^2=1\) as follows: \[ \left( \color{red}{-\frac{\sqrt{2}}{2}}\\-0\right)^2 + \left(\color{red}{-\frac{\sqrt{2}}{2}}\\-0\right)^2 ~ \stackrel{?}{=} 1 \] Next, because we are subtracting \(-\frac{\sqrt{2}}{2}\) by \(\color{red}{0}\), we are essentially taking nothing away: \[ \left(-\frac{\sqrt{2}}{2}\ \color{red}{-\ 0}\right)^2 + \left(-\frac{\sqrt{2}}{2}\ \color{red}{-\ 0}\right)^2 ~ \stackrel{?}{=} 1 \] So we remove the \(-0\) and leave the \(\color{red}{-\frac{\sqrt{2}}{2}}\\ \): \[ \left(\color{red}{-\frac{\sqrt{2}}{2}}\right)^2 + \left(\color{red}{-\frac{\sqrt{2}}{2}}\right)^2 ~ \stackrel{?}{=} 1 \] Now we apply the power rule \( \color{red}{(ab)^n = a^n\\b^n} \) to distribute the exponent: \[ -\frac{\sqrt{2}\color{red}{^2}}{2\color{red}{^2}} + \left(-\frac{\sqrt{2}\color{red}{^2}}{2\color{red}{^2}}\right) \stackrel{?}{=} 1 \] And because we are squaring a square root we simply remove the radical sign and are left with \(\color{red}{2}\\ \) in the numerator: \[ -\frac{\color{red}{2}}{2^2} + \left(-\frac{\color{red}{2}}{2^2}\right) \stackrel{?}{=} 1 \] Squaring the denominators \(\color{red}{2^2}\) gives us \(\color{red}{4}\\ \): \[ -\frac{2}{\color{red}{4}}\\ + \left(-\frac{2}{\color{red}{4}}\right) \stackrel{?}{=} 1 \] Because in the step above we where adding a negative, \( -\frac{2}{4} \color{red}{+}\\ \left(\color{red}{-}\\ \frac{2}{4}\right) \), we next change the sign to minus: \[ -\frac{2}{4} \color{red}{-}\\ \frac{2}{4} \stackrel{?}{=} 1 \] We can now subtract the numerators \(\color{red}{-2-2}\) and we get \(\color{red}{-4}\) on top: \[ \color{red}{-\frac{4}{4}}\\ \stackrel{?}{=} 1 \] Finally, because \(\color{red}{-\frac{4}{4}}\) is the same as \(\color{red}{-1}\\ \), we can now determine that \(\color{red}{-1}\\ \) is not equal to \(\color{red}{1}\\ \) \[ \color{red}{-1}\\ \neq 1 \] Therefore that the points \( \left(-\frac{\sqrt{2}}{2},-\frac{\sqrt{2}}{2}\right) \) do not lie on the unit circle \( (x-0)^2+(y-0)^2=1\ \).
-
\[\left(\frac{3}{5},-\frac{4}{5}\right)\]
2. Cell Phone Company
A cell phone company charges a flat rate of $50 per month for up to 2GB of data. If you use more than 2GB of data, you will pay an extra $10 for each GB of data used beyond the included 2GB. For example, if you use 6GB of data, you will pay the base at rate of $50, plus $40 ($10 for each of the 4 extra GB of data used), for a total of $90.
-
How much would your monthly bill be if you use 0.5GB of data? What about 1GB of data? What about 2GB of data?
Since with each instance the data usage is either 2GB or less, the bill would simply be the flat rate of $50: \[ 0.5GB = $50\] \[ 1GB = $50\] \[ 2GB = $50\]
-
Use your answers to (a) to find a function \(f(x)\) that gives the cost of your monthly bill if you use \(x\)
GB of data, where \(0\le x \le2\) (in other words, you only use 0 to 2GB of data.)
This is the function for the flat rate cost: \[ f(x) = 50\]
-
How much would your monthly bill be if you use 3GB of data? What about 4GB of data? What about 5GB of data?
With \( \color{red}{3GB} \) of data usage we subtract the flat rate of 2GB from the 3GB used which gives us a difference of 1GB: \[ \color{red}{3GB}\\ - 2GB = 1GB \] Then multiply the difference of 1 by the extra GB usage rate of $10: \[ \color{red}{1}\\ \cdot 10 = $10 \] Which gives us a product of \(\color{red}{$10}\\ \) which we then add to the flat rate amount of $50, which gives us a total bill of $60: \[ 50 + \color{red}{10}\\ = $60 \] And here is the full sequence of steps: \[ 3GB = 50 + (10 \cdot (\color{red}{3 - 2}\\ )) = 50 + (\color{red}{10 \cdot 1}\\ ) = \color{red}{50 + 10}\\ = $60\]
With \( \color{red}{4GB} \) of data usage we subtract the flat rate of 2GB from the 4GB used which gives us a difference of 2GB: \[ \color{red}{4GB}\\ - 2GB = 2GB \] Then multiply the difference of \(\color{red}{2}\\ \) by the extra GB usage rate of $10: \[ \color{red}{2}\\ \cdot 10 = $20 \] Which gives us a product of \(\color{red}{$20}\\ \) which we then add to the flat rate amount of $50, which gives us a total bill of $70: \[ 50 + \color{red}{20}\\ = $70 \] And here is the full sequence of steps: \[ 4GB = 50 + (10 \cdot (\color{red}{4 - 2}\\ )) = 50 + (\color{red}{10 \cdot 2}\\ ) = \color{red}{50 + 20}\\ = $70\]
With \( \color{red}{5GB} \) of data usage we subtract the flat rate of 2GB from the 5GB used which gives us a difference of 3GB: \[ \color{red}{5GB}\\ - 2GB = 3GB \] Then multiply the difference of \(\color{red}{3}\\ \) by the extra GB usage rate of $10: \[ \color{red}{3}\\ \cdot 10 = $30 \] Which gives us a product of \(\color{red}{$30}\\ \) which we then add to the flat rate amount of $50, which gives us a total bill of $80: \[ 50 + \color{red}{30}\\ = $80 \] And here is the full sequence of steps: \[ 5GB = 50 + (10 \cdot (\color{red}{5 - 2}\\ )) = 50 + (\color{red}{10 \cdot 3}\\ ) = \color{red}{50 + 30}\\ = $70\] -
Use your answers to (c) to find a function \(g(x)\) that gives the total cost of your monthly bill if you use
\(x\) GB of data, where \(x \le 2\) (in other words, you use more than 2 GB of data.)
Using our answers to (c), we can construct the following function where \(x\) is the amount of data used in GB: \[ g(x) = 50 + (10 \cdot (x - 2)) \]
-
Combine your answers to (b) and (d) to create a piecewise function that gives the monthly cost
of using any amount of data.
We can now build a piecewise function \(h(x)\) where use the function \(f(x)\) for data usage of 2GB or less, and use the function \(g(x)\) for data usage going over 2GB: \begin{align*} h(x) &\left\{ \begin{array}{ll} ~ f(x) = 50 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~IF ~~~~ x \leq 2GB\\ ~ g(x) = 50 + (10 \cdot (x - 2)) ~~~~IF ~~~~ x \gt 2GB\\ \end{array} \right. \end{align*}
3. Finding Domain (x values)
Let \( f(x) = \frac{ \sqrt{x-5}}{x^2-3x+2} \). This problem will walk you through finding the domain of \(f(x)\).
-
Start by looking at the numerator. You cannot take the square root of a negative number, so the
radicand must be greater than or equal to zero. Use this idea to determine what the numerator
tells you about \(x\) (Leave your answer as an inequality. Don't put it in interval notation just yet!)
With the function: \[f(x) = \frac{\sqrt{x-5}}{x^2-3x+2} \] First let's focus on the numerator: \[\sqrt{x-5} \] To figure out the domain for the numerator, we simply need to add 5 to each side: \begin{align} x-5 &\ge 0 \\ +5 &\ge +5 \\ \hline x &\ge 5 \end{align} And we determine that the value of \(x\) must be greater than or equal to \(5\).
-
Now look at the denominator. The denominator of fraction cannot equal zero. Use this idea to figure out
what the denominator tells us about \(x\). (Leave your answer in the form \(x \ne \) .... Don't
put it in interval notation just yet!)
With the function: \[f(x) = \frac{\sqrt{x-5}}{x^2-3x+2} \] We need to focus on the denominator, and we will need to make sure that no \(x\) values will cause the denominator to be \(0\): \[ x^2 - 3x + 2 \neq 0 \] Factoring the polynomial we get: \[ (x - 1)(x - 2) \neq 0 \]
For the first parentheses we add 1 to both sides and we determine that \(x\) cannot be \(1\): \[ x - 1 \neq 0 \] \[ x \neq 1 \]
For the second parentheses we add 2 to both sides and we determine that \(x\) cannot be \(2\): \[ x - 2 \neq 0 \] \[ x \neq 2 \]
Check 1: \[ 1^2 - 3(1) + 2 \] \[ 1 - 3 + 2 \] \[ -2 + 2 \] \[ 0 \]
Check 2: \[ 2^2 - 3(2) + 2 \] \[ 4 - 6 + 2 \] \[ -2 + 2 \] \[ 0 \]
After checking both \(x\) values, we know that we where correct in that using an \(x\) value of \(1\) or \(2\) would both end up with giving us a zero in the denominator, which would not work. -
Draw a number line. Using your answers to (a) and (b), shade the regions corresponding to the
values \(x\) can be.
Since \(x\) values of \(1\) or \(2\) are both less than \(5\), and we have already determined that we cannot have any \(x\) values less than \(5\), we only need to represent the possible values of \(x\) which must be greater than or equal to \(5\) on the number line:
-
Now use the number line to put your answer into interval notation.
Again, since \(x\) values of \(1\) or \(2\) are both less than \(5\), and we have already determined that we cannot have any \(x\) values less than \(5\), we only need to represent the possible values of \(x\) which must be greater than or equal to \(5\) in interval notation: \[ [5, \infty ) \]


Drill: 1 v 1 plus setter
- Start with a player each side of the net and the setter on one side
- The drill starts from a free-ball feed, and the players play standard 3-touch rally
- Once the setter has set the attacker, they have to run under the net to becode the setter for the other player
- Players should focus on continuation of the drill; it's about control
Play - Reset


Tire models¶
The tire models describe the forces in the road-tire interactions according to the dynamic condition of the vehicle.
The typical relation between the lateral force and the slip angle can be observed in Fig. 61. Besides, it is possible to verify the definition of slip angle.
Linear¶
The linear tire model describes a linear relationship between tire lateral force and slip angle.
The lateral force of the tire can be calculated as
where \(F_y\) is the lateral force, \(K\) is the cornering stiffness and \(\alpha\) is the tire slip angle.
This model is only valid for small values of slip angle
Pacejka (Magic Formula)¶
Nonlinear relationship between tire lateral force and slip angle expressed by a semi-empirical model with experimental coefficients [BPL89].
The lateral force can be written as
where \(\alpha_{eq}\) is the equivalent slip angle
and \(F_{y, n}\) is the reference function of the lateral force
The coefficients \(B\), \(C\), \(D\) and \(E\) can be written as
The horizontal and vertical shifts of the curve are calculated as
The model implemented here converts the slip angle using the following equation
_ALPHA = asin(sin(alpha));_
This equation alters the slip angle in such way that the characteristic equation becames symmetric in relation to the vertical line at 90 degrees and the lateral force becomes zero at 180 degrees. The same analogy can be made with negative values of the slip angle. Thus, this model covers the whole range of slip angles (-180 to 180 degrees).
Polynomial¶
Nonlinear relation between tire lateral force and slip angle expressed by a third order polinomial equation.
This model is used by several authors [JH84][SW13][SH98].
The equation of the model is given by
where \(F_y\) is the lateral force and \(\alpha\) is the tire slip angle. \(k_1\) and \(k_2\) are the model coefficients. This model is valid up to the maximal lateral force (Tire saturation).
Tire comparison¶
Under construction.


{% extends "../layout.html" %}
{% block page_title %}
Find a career
{% endblock %}
{% block content %}
{% set serviceName = 'Find a career' %}
{% set bannerStyle = 'BETA-style' %}
{% set filterName = 'Interests' %}
{% include "../includes/survey.html" %}
{% include "../includes/global_header_bar.html" %}
{% include "../includes/breadcrumb_filters.html" %}
{{filterName}}
Choose your interests
Step 1 of 5
{% endblock %}


Everolimus, Subependymal giant cell astrocytoma, Tuberous sclerosis
Novel polyvinyl-alcohol microsphere for everolimus delivery for subependymal giant cell astrocytoma. Journal of Drug Delivery Science and Technology, 81, 104204Abstract
Everolimus (EVR) has demonstrated efficacy in treating subependymal giant cell astrocytoma (SEGA) and other tuberous sclerosis (TSC) manifestations. Oral use of EVR is associated with low bioavailability and systemic toxicities culminating in treatment cessation in an appreciable patient population. To circumvent undesired effects, we developed a microsphere embedded formulation of EVR using polyvinyl alcohol (PVA) with an end-goal to achieve higher bioavailability and sustained delivery.
PVA-EVR microspheres were physically cross-linked using the freeze-thaw technique, and solvent-cast PVA-EVR films were developed as a control, without freezing and thawing cycles to ascertain the techniques significance. In vitro analyses and characterization were performed to determine drug release and drug-polymer compatibility, whereas In silico studies were done to analyze the non-crosslinked polymer and to …


MediaElement.js
MediaElement
- core library, no player
MediaElementPlayer - Default
- default player install
MediaElementPlayer - Audio
- audio player example
MediaElementPlayer - Skins
- CSS skins demo
MediaElementPlayer - Track
- track and translation demo
MediaElementPlayer - Source Chooser
- multiple sources
MediaElementPlayer - Timecode and Framecount
- Timecode and Framecount demo
MediaElementPlayer - HLS
- controls on HLS video
MediaElementPlayer - YouTube
- controls on YouTube video
MediaElementPlayer - Responsive
- 100% player with YouTube
MediaElementPlayer - Events
- example of attaching events
MediaElementPlayer - Postroll
- showing something when video ends


--- layout: page lang: en permalink: "/resources/" trans_url: "/ressources/" title: Opportunity to Participate in Research - CDS Resources ---
The Canadian Digital Service helps government teams continually improve how they deliver public services. One way we’re doing this is by making learnings and resources available on a public website. We’re preparing to launch a small set of resources and are looking for neurodiverse public servants to participate in a usability testing session and provide feedback.
Our goal is to make these resources accessible to public servants with all types of learning styles.
In total, participating will take about 90 minutes of your time.
If you choose to participate you would:
More about our approach to accessibility
Our goal is to make this website accessible and useful for everyone. Each time we make a change to the website we:
We know that automated and manual testing won’t catch all accessibility barriers. To identify task- and information-specific barriers, we also test with public servants with disabilities. This helps us make sure the website is both useful and usable for everyone.
If you would like to participate, please contact:
Hillary Lorimer
Phone:<PHONE_NUMBER>
Email<EMAIL_ADDRESS>CDS is a program within the Treasury Board Secretariat (TBS) of Canada.
Any personal information that may be collected is described in the Standard Personal Information Bank entitled Outreach Activities, PSU 938
If you have any comments or concerns about what you read here, or about your privacy rights, you may contact:
TBS Access to Information and Privacy Coordinator.
Email<EMAIL_ADDRESS>Telephone: 1-866-312-1511
You have the right to complain to the Office of the Privacy Commissioner of Canada about the handling of your personal information.
Email<EMAIL_ADDRESS>Telephone: 1-800-282-1376


Given a binary tree and a sum, determine if the tree has a root-to-leaf path such that adding up all the values along the path equals the given sum.
Note: A leaf is a node with no children.
Example:
Given the below binary tree and sum = 22
,
5
/ \
4 8
/ / \
11 13 4
/ \ \
7 2 1
return true, as there exist a root-to-leaf path 5->4->11->2
which sum is 22.
Note that node value could be negative so pruning can not be performed.
/**
* Definition for a binary tree node.
* function TreeNode(val) {
* this.val = val;
* this.left = this.right = null;
* }
*/
/**
* @param {TreeNode} root
* @param {number} sum
* @return {boolean}
*/
var hasPathSum = function(root, sum) {
if (!root) { return false }
if (root.left === null && root.right === null) { return root.val === sum }
return hasPathSum(root.left, sum - root.val) || hasPathSum(root.right, sum - root.val)
};
Template generated via Leetmark.


const ( PeersCommand = "peers" ConfigCommand = "config" EndorsersCommand = "endorsers" )
func AddCommands(cli CommandRegistrar)
AddCommands registers the discovery commands to the given CommandRegistrar
ClientStub is a stub that communicates with the discovery service using the discovery client implementation
type ClientStub struct { }
func (stub *ClientStub) Send(server string, conf common.Config, req *discovery.Request) (ServiceResponse, error)
Send sends the request, and receives a response
CommandRegistrar registers commands
type CommandRegistrar interface { // Command adds a new top-level command to the CLI Command(name, help string, onCommand common.CLICommand) *kingpin.CmdClause }
ConfigCmd executes a command that retrieves config
type ConfigCmd struct {
// contains filtered or unexported fields
}
func NewConfigCmd(stub Stub, parser ResponseParser) *ConfigCmd
NewConfigCmd creates a new ConfigCmd
func (pc *ConfigCmd) Execute(conf common.Config) error
Execute executes the command
func (pc *ConfigCmd) SetChannel(channel *string)
SetChannel sets the channel of the ConfigCmd
func (pc *ConfigCmd) SetServer(server *string)
SetServer sets the server of the ConfigCmd
ConfigResponseParser parses config responses
type ConfigResponseParser struct { io.Writer }
func (parser *ConfigResponseParser) ParseResponse(channel string, res ServiceResponse) error
ParseResponse parses the given response for the given channel
EndorserResponseParser parses endorsement responses from the peer
type EndorserResponseParser struct { io.Writer }
func (parser *EndorserResponseParser) ParseResponse(channel string, res ServiceResponse) error
ParseResponse parses the given response for the given channel
EndorsersCmd executes a command that retrieves endorsers for a chaincode invocation chain
type EndorsersCmd struct {
// contains filtered or unexported fields
}
func NewEndorsersCmd(stub Stub, parser ResponseParser) *EndorsersCmd
NewEndorsersCmd creates a new EndorsersCmd
func (pc *EndorsersCmd) Execute(conf common.Config) error
Execute executes the command
func (pc *EndorsersCmd) SetChaincodes(chaincodes *[]string)
SetChaincodes sets the chaincodes to be the given chaincodes
func (pc *EndorsersCmd) SetChannel(channel *string)
SetChannel sets the channel
func (pc *EndorsersCmd) SetCollections(collections *map[string]string)
SetCollections sets the collections to be the given collections
func (pc *EndorsersCmd) SetServer(server *string)
SetServer sets the server
PeerCmd executes channelPeer listing command
type PeerCmd struct {
// contains filtered or unexported fields
}
func NewPeerCmd(stub Stub, parser ResponseParser) *PeerCmd
NewPeerCmd creates a new PeerCmd with the given Stub and ResponseParser
func (pc *PeerCmd) Execute(conf common.Config) error
Execute executes the command
func (pc *PeerCmd) SetChannel(channel *string)
SetChannel sets the channel of the PeerCmd
func (pc *PeerCmd) SetServer(server *string)
SetServer sets the server of the PeerCmd
PeerResponseParser parses a channelPeer response
type PeerResponseParser struct { io.Writer }
func (parser *PeerResponseParser) ParseResponse(channel string, res ServiceResponse) error
ParseResponse parses the given response about the given channel
RawStub is a stub that communicates with the discovery service without any intermediary.
type RawStub struct { }
func (stub *RawStub) Send(server string, conf common.Config, req *discovery.Request) (ServiceResponse, error)
Send sends the request, and receives a response
ResponseParser parses responses sent from the server
type ResponseParser interface { // ParseResponse parses the response and uses the given output when emitting data ParseResponse(channel string, response ServiceResponse) error }
ServiceResponse represents a response sent from the discovery service
type ServiceResponse interface { // ForChannel returns a ChannelResponse in the context of a given channel ForChannel(string) discovery.ChannelResponse // ForLocal returns a LocalResponse in the context of no channel ForLocal() discovery.LocalResponse // Raw returns the raw response from the server Raw() *Response }
Stub represents the remote discovery service
type Stub interface { // Send sends the request, and receives a response Send(server string, conf common.Config, req *discovery.Request) (ServiceResponse, error) }


This is an angular wrap-over for the library gauge-chart
A library for creating nice and flexible gauge charts with Angular.
You can catch us on twitter: @recogizer or head over to our company's website.
npm install @recogizer/angular-gauge-chart
Import angular-gauge-chart
into your module and add as a declaration.
import { GaugeChartComponent } from 'angular-gauge-chart'
declarations: [
GaugeChartComponent,
]
Create an element for positioning gauge in your html file:
<gauge-chart
[canvasWidth]="canvasWidth"
[needleValue]="needleValue"
[centralLabel]="centralLabel"
[options]="options"
[name]="name"
[bottomLabel]="bottomLabel"></gauge-chart>
Now you're ready to draw your own gauge.
Just copy to your ts file the following code:
public canvasWidth = 300
public needleValue = 65
public centralLabel = ''
public name = 'Gauge chart'
public bottomLabel = '65'
public options = {
hasNeedle: true,
needleColor: 'gray',
needleUpdateSpeed: 1000,
arcColors: ['rgb(44, 151, 222)', 'lightgray'],
arcDelimiters: [30],
rangeLabel: ['0', '100'],
needleStartValue: 50,
}
Feel free to change or delete any of the gaugeOptions properties as long as their values are in permitted ranges.
canvasWidth: number
needleValue: number
centralLabel: string
options = { ... } :
| Name | Values Ranges | Description |
|---|---|---|
| hasNeedle | true / false | determines whether to show the needle or not |
| needleColor | value supported by CSS | colorizes needle with specified colors |
| needleUpdateSpeed | number larger than 0 | determines the speed of needle update animation |
| arcColors | array of values supported by CSS | colorizes gauge with specified color |
| arcDelimiters | array of numbers from 0 to 100 | specifies delimiters of the gauge in ascending order |
| rangeLabel | array of two strings | depicts gauge ranges on both sides of the chart |
| centralLabel | string | depicts gauge inner label |
name?: string (will be shown above the gauge)
nameFont?: number (font size of the name)
bottomLabel?: string (will be shown bellow the gauge)
bottomLabelFont?: number (font size of the bottom label)
Some examples of what you can get out of the library using different properties:
Build the library with npm run build
. This will fetch all dependencies and then compile the dist
files. To see the examples locally you can start a web server with npm start
and go to localhost:3000
.
MIT License. Copyright (c) 2017-2018 RECOGIZER GROUP GmbH.
Generated using TypeDoc


{% load wagtailcore_tags %} {% load humanize %} {% load add_govuk_classes from content_tags %} {% if triage_data.sector %}
These figures show typical mid-point salaries from a range of jobs at a similar level. Choose a different location to compare salaries.
Entry level
£{{entry_salary|default_if_none:'-'|intcomma}} per year
For professions like {{ professions_by_sector.entry_level|default:'-' }}
Mid level
£{{mid_salary|default:'-'|intcomma}} per year
For professions like {{ professions_by_sector.mid_level|default:'-' }}
Executive level
£{{executive_salary|default:'-'|intcomma}} per year
For professions like {{ professions_by_sector.executive_level|default:'-' }}
There currently is no data available for the selected criteria.


Wizard steppers portray progress through a sequence of steps.
The default wizard stepper has a horizontal layout. The wizard stepper fills all available space and evenly distributes its steps.
Use the aria-current attribute to denote the current step in the list.
The wizard stepper can be sized and aligned using standard CSS:
Use the wizard-stepper--vertical modifier for a wizard stepper with vertical layout.
New Mens Addidas Ultra Boost
Order total $220
We will notify you once it ships.
Guaranteed Wednesday, October 09.
New Mens Addidas Ultra Boost
Order total $220
We will notify you once it ships.
Guaranteed Wednesday, October 09.
To transition to an "information" or "attention" state, use the relevant wizard-stepper__item--transition-information or wizard-stepper__item--transition-attention modifier class.


This application contains the following software.
If you are using fmdb in your project, I'd love to hear about it. Let me know at<EMAIL_ADDRESS>In short, this is the MIT License.
Copyright (c) 2008 Flying Meat Inc.
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
 IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Copyright (C) 2009 Stig Brautaset. All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
* Neither the name of the author nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

Copyright (c) 2011 Sam Vermette
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
 IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
A different license may apply to other ressources included in this package, including Joseph Wain's Glyphish Icons. Please consult their respective headers for the terms of their individual licenses.
Copyright 2012. Arash Payan. This library is distributed under the terms of the MIT/X11.
While not required, I greatly encourage and appreciate any improvements that you make to this library be contributed back for the benefit of all who use Appirater.
Copyright 2012 Noda Shimpei
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
MIT License (MIT) Copyright (c) 2012 Davander Mobile Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
 IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
http://en.wikipedia.org/wiki/List_of_colors:_A-M
http://ja.wikipedia.org/wiki/色名一覧


返回主页
Community Matters at AltSchool
Posted by Lesley Grossblatt
Apr 21, 2015
“What’s your super power?” “What’s your favorite thing about school?” “What’s your favorite thing to do outside?”
AltSchool recently hosted a welcome day for both incoming and currently enrolled families in the Bay Area. The day was jam-packed with fun activities; from potato sack races to a brainstorming session to answer questions on post-it notes like the ones above. We had the opportunity to connect as one large AltSchool family.
您也可以 先下载一个应用程序（App），有空再慢慢看。
The Many Meanings of Community
Schools are more than just classrooms — they’re the starting point for communities of people who share values and experiences centered on growth and learning. School-based communities spur strong personal relationships that often last for years, as children and families grow together during their time in school and beyond graduation. With this in mind, AltSchool aims to foster a community that grows over time and across multiple relationships, including parents, students, families, friends, teachers, AltSchool employees, and the neighborhoods where AltSchool campuses are located.
AltSchool’s network and microschool structure allows us to build community at multiple levels — whether it’s a family maker event at a particular site or network-wide town hall. And with a deep focus on personalization, we look for ways that we can connect families according to their specific interests and skills.
Here are some of ways we foster community at AltSchool:
Town Halls: Every month AltSchool hosts a town hall for parents to come together and discuss an array of topics ranging from parent education strategies (e.g., how to continue your child's learning at home or how to prepare for high school), AltSchool’s approaches to curriculum, and new product releases for parents.
Online Communities: Each AltSchool class has an online community where educators and parents share everything from upcoming student performances, to art projects completed in class, to photos and insights from the most recent field trip.
Regular Field Trips: AltSchool classes take students on exciting field trips across the city that give them opportunities to connect with the wider community. Recent expeditions include the Exploratorium, the San Francisco Zoo, California Academy of Science and the Yerba Buena Ice Skating Center.
Family Maker Events: Maker events provide opportunities for educators, parents, and students to collaborate through building, tinkering, and learning together.
Parent Volunteer Programs: At AltSchool, we build personalization not only into the student experience, but into the parent experience as well. Families are encouraged to share their time and resources in the ways that are most meaningful to them, from planning get-togethers, to welcoming and mentoring new families, to volunteering in the classroom as experts in their fields.
Having a strong community means a more engaging and vibrant educational experience. We encourage all family members to share their unique gifts and interests — contact us at<EMAIL_ADDRESS>to learn more and let us know how you would like to contribute!
Bespoke 预定/定做 Education
返回页首
返回主页
version:1.0<EMAIL_ADDRESS>© retter2012.com


Blockchain Technology is the technology that is used for digital currency e.g. Bitcoin. It allows digital information to be distributed but not copied. This means each piece of data only has one owner
The information is constantly arranged into the datbase, which is stored in multiple locations and updated instantly. This means records are public and verifiable. The only user who can add new records to a particular chain has a special cryptographic key making blockchain independent, transparent and secure.
This is a breakthrough tech and it is expected to alter most industries over the next few years. It could be used to improve efficiency of certain services and alter industries such as the financial services industry e.g. online payments
In 2008 an unknown person or group known as Satoshi Nakamoto introduced Bitcoin. Its a simple implementation of blockchain technology as a digital currency. It became one of the first digital currencies to use peer-to-peer technology to allow instant payments. It solved the problem of double spending. Bitcoin is controlled by no specific person and is unable to be manipulated
Robots, drones and autonomous vehicles are all examples of autonomous things. They exploit AI to deliver advanced behaviours that interact naturally with their surroundings and with people. It is an emerging term for technological developments that allow computers to operate as autonomous entities without human direction. They are freely moving and interact with humans and other objects.
Self navigating drones are a perfect example of autonomous tech that are being used. Its expected that autonomous cars will be the first items deployed on mass.These are expected to crop up in 2020. Other autonomous tech expected to crop up are home robotics and military robots. This technology was based on artificial intelligence (AI). This technology requires high levels of safety and security
Military Robots are an example of an Autonomous thing. They have been used by armed forces around the world for many years. They can all be traced back to the First World War. They are often used for non-lethal activities such as for search and rescue and explosive disarming and many other activities. They are not fully autonomous at present for safety reasons however.
Military robot usage increased from 150 in 2005 to 5,000. Many of these were used to disarm over 1000 roadside bombs in Iraq.An example of a military robot in use is The DRDO Daksh it is currently being used by the Indian Army to locate, handle and destroy hazardous objects
This is an environment that completely surrounds and creates the illusion that you are inside of or part of it. It is created through a mix of data science, AI and creativity. It can be used for battlefield simulations and hospital management scenarios. It helps to prepare teams for success. By 2021 it is expected that VR (virtual reality) and AR (augmented reality) will have grown into a $108 billion market.
VR mimics or replaces acitvites and places in the real world and currently requires the use of a headset e.g. The Oculus Rift. AR enhances the real world by overlaying it with virtual elements e.g. Pokemon Go. Finally Mixed Reality is like a mixture of both AR and VR.
There are many AR games that have been created one of the most popular being Pokemon Go. This is a game where users can walk around their local area or town and collect pokemon which appear when they look on their phone to be in front of them. There are also messaging apps that use AR to make the user experience more exciting such as Snapchat. Filters on Snapchat can allow users to alter how they look. Snapchat offers a range of filters e.g. one to make the user look like a puppy.
Shopping experiences have been altered by AR also. AR enabled mirrors can show shoppers what items will look like on them e.g. Friends with Holo-grams founded by Courtney Harding. This application works with retailers to create personalised AR and VR shopping experiences.


No Stone Unturned is a complete tabletop roleplaying game for 2-6 players. It's designed to play as a one-shot or short campaign, with sessions lasting from 2-4 hours each. Players will create characters and locations and take turns as the Arbiters of the world, meaning there is no set Game Master.
You will create a story that features characters living in a world unrecognizable to our own. Their society is starting to pick up the pieces after yet another apocalypse. Natural catastrophes, manmade disasters, and external influences have caused collapse after collapse, but humanity has somehow hung on. Remainders of each of these civilizations and artifacts of their downfalls lurk hidden throughout the world.
Enough time has passed that many settlements have stabilized and are now looking to expand and explore what is around them. The characters that you will play live in one of these settlements and are tasked with exploring the world around them and acquiring what resources and knowledge that can be found. While that may sound like a noble cause, other societies, recovering wildlife, unstable ecosystems, and volatile remnants from disasters past are scattered all throughout the land. If these adventurers aren't careful, their actions will endanger their neighbors as well as their own homes…
This site contains the full rules, which are broken into 4 main parts. Grab the links below or on the sidebar. This is a living document which will be updated with changes to the rules until the final version is published. Thanks for reading!
{% for post in site.posts %}
{% endfor %}
The .pdf can be purchased on itch.io. Additionally, we will be crowdfunding the printing of a zine containing the full rules as a part of Zine Quest in February 2020.
Feel free to remix these rules and make whole new games out of them. All I ask is that you let me know about your project so I can check it out and that you reference No Stone Unturned somewhere in the document as an inspiration. You can reach out to me on
Twitter
If you are using the "Details" system, that is based on the Indie Hack, so refer to
their SRD for attribution requirements.


logangee.net
logangee.net
this site is
currently
always
under construction
about
now
essays
projects
recipes
writings


1. What is C#?
C# is a computer programming language. C# was developed by Microsoft in 2000 to provide a modern general-purpose programming language that can be used to develop all kinds of software targeting various platforms including Windows, Web, and Mobile using just one programming language. Today, C# is one of the most popular programming languages in the world. Millions of software developers use C# to build all kinds of software.
C# is the primary language for building Microsoft .NET software applications. Developers can build almost every kind of software using C# including Windows UI apps, console apps, backend services, cloud APIs, Web services, controls and libraries, serverless applications, Web applications, native iOS and Android apps, AI and machine learning software, and blockchain applications.
C# with the help of Visual Studio IDE provides a rapid application development. C# is a modern, object-oriented, simple, versatile, and performance-oriented programming language. C# is developed based on the best features and use cases of several programming languages including C++, Java, Pascal, and SmallTalk.
C# syntaxes are like C++. .NET and the C# library is similar to Java. C# supports modern object-oriented programming language features including Abstraction, Encapsulation, Polymorphism, and Inheritance. C# is a strongly typed language and most types are inherited by the Object class.
C# supports concepts of classes and objects. Classes have members such as fields, properties, events, and methods. Here is a detailed article on C# and OOP.
C# is versatile, modern, and supports modern programming needs. Since its inception, C# language has gone through various upgrades. The latest version of C# is v8.0. Here is a detailed series on C# 8 -
Learn C# 8.0 Step by Step.
2. What is an object in C#?
C# language is an object-oriented programming language. Classes are the foundation of C#. A class is a template that defines what a data structure will look like, and how data will be stored, managed, and transferred. A class has fields, properties, methods, and other members.
While classes are concepts, objects are real. Objects are created using class instances. A class defines the type of an object. Objects store real values in computer memory.
Any real-world entity which has some certain characteristics or that can perform some work is called an Object. This object is also called an instance, i.e. a copy of an entity in a programming language. Objects are instances of classes.
For example, we need to create a program that deals with cars. We need to create an entity for the car. Let’s call it a class, Car. A car has four properties, i.e., model, type, color, and size.
To represent a car in programming, we can create a class, Car, with four properties, Model, Type, Color, and Size. These are called members of a class. A class has several types of members, constructors, fields, properties, methods, delegates, and events. A class member can be private, protected, and pubic. Since these properties may be accessed outside the class, these can be public.
An object is an instance of a class. A class can have as many instances as needed. For example, Honda Civic is an instance of Car. In real programming, Honda Civic is an object. Honda Civic is an instance of the class Car. The Model, Type, Color, and Size properties of Honda Civic are Civic, Honda, Red, 4 respectively. BMW 330, Toyota Carolla, Ford 350, Honda CR4, Honda Accord, and Honda Pilot are some more examples of objects of Car.
3. What is Managed or Unmanaged Code?
Managed Code
“Managed code is the code that is developed using the .NET framework and its supported programming languages such as C# or VB.NET. Managed code is directly executed by the Common Language Runtime (CLR or Runtime) and its lifecycle including object creation, memory allocation, and object disposal is managed by the Runtime. Any language that is written in .NET Framework is managed code".
Unmanaged Code
The code that is developed outside of the .NET framework is known as unmanaged code.
“Applications that do not run under the control of the CLR are said to be unmanaged. Languages such as C or C++ or Visual Basic are unmanaged.
The object creation, execution, and disposal of unmanaged code is directly managed by the programmers. If programmers write bad code, it may lead to memory leaks and unwanted resource allocations.”
The .NET Framework provides a mechanism for unmanaged code to be used in managed code and vice versa. The process is done with the help of wrapper classes.
4. What is Boxing and Unboxing in C#?
Boxing and Unboxing both are used for type conversions.
The process of converting from a value type to a reference type is called boxing. Boxing is an implicit conversion. Here is an example of boxing in C#.
-
-
int anum = 123;
-
Object obj = anum;
-
Console.WriteLine(anum);
-
Console.WriteLine(obj);
The process of converting from a reference type to a value type is called unboxing. Here is an example of unboxing in C#.
-
-
Object obj2 = 123;
-
int anum2 = (int)obj;
-
Console.WriteLine(anum2);
-
Console.WriteLine(obj);
5. What is the difference between a struct and a class in C#?
Class and struct are both user-defined data types, but have some major differences:
Struct
- The struct is a value type in C# and it inherits from System.Value Type.
- Struct is usually used for smaller amounts of data.
- Struct can’t be inherited from other types.
- A structure can't be abstract.
- No need to create an object with a new keyword.
- Do not have permission to create any default constructor.
Class
- The class is a reference type in C# and it inherits from the System.Object Type.
- Classes are usually used for large amounts of data.
- Classes can be inherited from other classes.
- A class can be an abstract type.
- We can create a default constructor.
6. What is the difference between Interface and Abstract Class in C#?
Here are some of the common differences between an interface and an abstract class in C#.
- A class can implement any number of interfaces but a subclass can at most use only one abstract class.
- An abstract class can have non-abstract methods (concrete methods) while in case of interface, all the methods have to be abstract.
- An abstract class can declare or use any variables while an interface is not allowed to do so.
- In an abstract class, all data members or functions are private by default while in an interface all are public, we can’t change them manually.
- In an abstract class, we need to use abstract keywords to declare abstract methods, while in an interface we don’t need to use that.
- An abstract class can’t be used for multiple inheritance while the interface can be used as multiple inheritance.
- An abstract class use constructor while in an interface we don’t have any type of constructor.
7. What is enum in C#?
An enum is a value type with a set of related named constants often referred to as an enumerator list. The enum keyword is used to declare an enumeration. It is a primitive data type that is user-defined.
An enum type can be an integer (float, int, byte, double, etc.). But if you use it beside int it has to be cast.
An enum is used to create numeric constants in the .NET framework. All the members of enum are enum type. There must be a numeric value for each enum type.
The default underlying type of the enumeration element is int. By default, the first enumerator has the value 0, and the value of each successive enumerator is increased by 1.
-
enum Dow {Sat, Sun, Mon, Tue, Wed, Thu, Fri};
Some points about enum,
- Enums are enumerated data types in c#.
- Enums are not for the end-user, they are meant for developers.
- Enums are strongly typed constant. They are strongly typed, i.e. an enum of one type may not be implicitly assigned to an enum of another type even though the underlying value of their members is the same.
- Enumerations (enums) make your code much more readable and understandable.
- Enum values are fixed. Enum can be displayed as a string and processed as an integer.
- The default type is int, and the approved types are byte, sbyte, short, ushort, uint, long, and ulong.
- Every enum type automatically derives from System.Enum and thus we can use System.Enum methods on enums.
- Enums are value types and are created on the stack and not on the heap.
8. What is the difference between “continue” and “break” statements in C#?
Using break statement, you can 'jump out of a loop' whereas by using a continue statement, you can 'jump over one iteration' and then resume your loop execution.
-
using System;
-
using System.Collections;
-
using System.Linq;
-
using System.Text;
-
namespace break_example {
-
Class brk_stmt {
-
public static void main(String[] args) {
-
for (int i = 0; i <= 5; i++) {
-
if (i == 4) {
-
break;
-
}
-
Console.WriteLine("The number is " + i);
-
Console.ReadLine();
-
}
-
}
-
}
-
}
Output
The number is 0;
The number is 1;
The number is 2;
The number is 3;
Eg. Continue Statement
-
using System;
-
using System.Collections;
-
using System.Linq;
-
using System.Text;
-
namespace continue_example {
-
Class cntnu_stmt {
-
public static void main(String[] {
-
for (int i = 0; i <= 5; i++) {
-
if (i == 4) {
-
continue;
-
}
-
Console.WriteLine(“The number is "+ i);
-
Console.ReadLine();
-
}
-
}
-
}
-
}
Output
9. What is the difference between constant and readonly in C#?
Const is nothing but "constant", a variable of which the value is constant but at compile time. It's mandatory to assign a value to it. By default, a const is static and we cannot change the value of a const variable throughout the entire program.
Readonly is the keyword whose value we can change during runtime or we can assign it at run time but only through the non-static constructor.
Example
We have a Test Class in which we have two variables, one is readonly and the other is a constant.
-
class Test {
-
readonly int read = 10;
-
const int cons = 10;
-
public Test() {
-
read = 100;
-
cons = 100;
-
}
-
public void Check() {
-
Console.WriteLine("Read only : {0}", read);
-
Console.WriteLine("const : {0}", cons);
-
}
-
}
Here, I was trying to change the value of both the variables in constructor, but when I try to change the constant, it gives an error to change their value in the block that I have to call at run time.
Finally, remove that line of code from class and call this Check() function like in the following code snippet:
-
class Program {
-
static void Main(string[] args) {
-
Test obj = new Test();
-
obj.Check();
-
Console.ReadLine();
-
}
-
}
-
class Test {
-
readonly int read = 10;
-
const int cons = 10;
-
public Test() {
-
read = 100;
-
}
-
public void Check() {
-
Console.WriteLine("Read only : {0}", read);
-
Console.WriteLine("const : {0}", cons);
-
}
-
}
Output
10. What is the difference between ref and out keywords?
The ref keyword passes arguments by reference. It means any changes made to this argument in the method will be reflected in that variable when control returns to the calling method.
The out keyword passes arguments by reference. This is very similar to the ref keyword.
11. Can “this” be used within a static method?
We can't use 'this' in a static method because the keyword 'this' returns a reference to the current instance of the class containing it. Static methods (or any static member) do not belong to a particular instance. They exist without creating an instance of the class and are called with the name of a class, not by instance, so we can’t use this keyword in the body of static Methods. However, in the case of Extension Methods, we can use the parameters of the function.
Let’s have a look at the “this” keyword.
The "this" keyword in C# is a special type of reference variable that is implicitly defined within each constructor and non-static method as a first parameter of the type class in which it is defined.
12. What are Properties in C#?
C# properties are members of a C# class that provide a flexible mechanism to read, write or compute the values of private fields, in other words, by using properties, we can access private fields and set their values. Properties in C# are always public data members. C# properties use get and set methods, also known as accessors, to access and assign values to private fields.
What are accessors?
The get and set portions or blocks of a property are called accessors. These are useful to restrict the accessibility of a property. The set accessor specifies that we can assign a value to a private field in a property. Without the set accessor property, it is like a readonly field. With the 'get' accessor we can access the value of the private field. In other words, it returns a single value. A Get accessor specifies that we can access the value of a field publically.
We have three types of properties: Read/Write, ReadOnly, and WriteOnly. Let's see each one by one.
13. What are extension methods in C#?
Extension methods enable you to add methods to existing types without creating a new derived type, recompiling, or otherwise modifying the original type.
An extension method is a special kind of static method, but they are called as if they were instance methods on the extended type.
How to use extension methods?
An extension method is a static method of a static class, where the "this" modifier is applied to the first parameter. The type of the first parameter will be the type that is extended.
Extension methods are only in scope when you explicitly import the namespace into your source code with a using directive.
14. What is the difference between the dispose and finalize methods in C#?
In finalize and dispose, both methods are used to free unmanaged resources.
Finalize
- Finalize is used to free unmanaged resources that are not in use, like files, database connections in the application domain and more. These are resources held by an object before that object is destroyed.
- In the Internal process, it is called by Garbage Collector and can’t be called manual by user code or any service.
- Finalize belongs to System.Object class.
- Implement it when you have unmanaged resources in your code, and make sure that these resources are freed when the Garbage collection happens.
Dispose
- Dispose is also used to free unmanaged resources that are not in use like files, database connections in the Application domain at any time.
- Dispose is explicitly called by manual user code.
- If we need to use the dispose method, we must implement that class via IDisposable interface.
- It belongs to IDisposable interface.
- Implement this when you are writing a custom class that will be used by other users.
15. What is the difference between String and StringBuilder in C#?
StringBuilder and string are both used to string values, but both have many differences on the bases of instance creation and also in performance.
String
A string is an immutable object. Immutable is when we create string objects in code so we cannot modify or change that object in any operations like insert new value, replace or append any value with the existing value in a string object. When we have to do some operations to change string simply it will dispose of the old value of string object and it will create a new instance in memory for hold the new value in a string object, for example:
- It’s an immutable object that holds a string value.
- Performance-wise, string is slow because it creates a new instance to override or change the previous value.
- String belongs to the System namespace.
StringBuilder
System.Text.Stringbuilder is a mutable object which also holds the string value, mutable means once we create a System.Text.Stringbuilder object. We can use this object for any operation like insert value in an existing string with insert functions also replace or append without creating a new instance of System.Text.Stringbuilder for every time so it’s using the previous object. That way, it works fast compared to the System.String. Let’s see an example to understand System.Text.Stringbuilder.
Note
- StringBuilder is a mutable object.
- Performance-wise StringBuilder is very fast because it will use the same instance of StringBuilder object to perform any operation like inserting a value in the existing string.
- StringBuilder belongs to System.Text.Stringbuilder namespace.
16. What are delegates in C# and the uses of delegates?
A Delegate is an abstraction of one or more function pointers (as existed in C++; the explanation about this is out of the scope of this article). The .NET has implemented the concept of function pointers in the form of delegates. With delegates, you can treat a function as data. Delegates allow functions to be passed as parameters, returned from a function as a value and stored in an array. Delegates have the following characteristics:
- Delegates are derived from the System.MulticastDelegate class.
- They have a signature and a return type. A function that is added to delegates must be compatible with this signature.
- Delegates can point to either static or instance methods.
- Once a delegate object has been created, it may dynamically invoke the methods it points to at runtime.
- Delegates can call methods synchronously and asynchronously.
The delegate contains a couple of useful fields. The first one holds a reference to an object, and the second holds a method pointer. When you invoke the delegate, the instance method is called on the contained reference. However, if the object reference is null then the runtime understands this to mean that the method is a static method. Moreover, invoking a delegate syntactically is the exact same as calling a regular function. Therefore, delegates are perfect for implementing callbacks.
Why Do We Need Delegates?
Historically, the Windows API made frequent use of C-style function pointers to create callback functions. Using a callback, programmers were able to configure one function to report back to another function in the application. So the objective of using a callback is to handle button-clicking, menu-selection, and mouse-moving activities. But the problem with this traditional approach is that the callback functions were not type-safe. In the .NET framework, callbacks are still possible using delegates with a more efficient approach. Delegates maintain three important pieces of information:
- The parameters of the method.
- The address of the method it calls.
- The return type of the method.
A delegate is a solution for situations in which you want to pass methods around to other methods. You are so accustomed to passing data to methods as parameters that the idea of passing methods as an argument instead of data might sound a little strange. However, there are cases in which you have a method that does something, for instance, invoking some other method. You do not know at compile time what this second method is. That information is available only at runtime, hence Delegates are the device to overcome such complications.
17. What are sealed classes in C#?
Sealed classes are used to restrict the inheritance feature of object-oriented programming. Once a class is defined as a sealed class, the class cannot be inherited.
In C#, the sealed modifier is used to define a class as sealed. In Visual Basic .NET the Not Inheritable keyword serves the purpose of the sealed class. If a class is derived from a sealed class then the compiler throws an error.
If you have ever noticed, structs are sealed. You cannot derive a class from a struct.
The following class definition defines a sealed class in C#:
-
-
sealed class SealedClass
-
{
-
}
18. What are partial classes?
A partial class is only used to split the definition of a class in two or more classes in the same source code file or more than one source file. You can create a class definition in multiple files, but it will be compiled as one class at run time. Also, when you create an instance of this class, you can access all the methods from all source files with the same object.
Partial Classes can be created in the same namespace. It isn't possible to create a partial class in a different namespace. So use the “partial” keyword with all the class names that you want to bind together with the same name of a class in the same namespace. Let’s see an example:
19. What is the difference between boxing and unboxing in C#?
Boxing and Unboxing are both used for type converting, but have some differences:
Boxing
Boxing is the process of converting a value type data type to the object or to any interface data type which is implemented by this value type. When the CLR boxes a value means when CLR converting a value type to Object Type, it wraps the value inside a System.Object and stores it on the heap area in the application domain.
Example
Unboxing
Unboxing is also a process that is used to extract the value type from the object or any implemented interface type. Boxing may be done implicitly, but unboxing has to be explicit by code.
Example:
The concept of boxing and unboxing underlies the C# unified view of the type system in which a value of any type can be treated as an object.
20. What is IEnumerable<> in C#?
IEnumerable is the parent interface for all non-generic collections in System.Collections namespace like ArrayList, HastTable etc. that can be enumerated. For the generic version of this interface as IEnumerable<T> which a parent interface of all generic collections class in System.Collections.Generic namespace like List<> and more.
In System.Collections.Generic.IEnumerable<T> have only a single method which is GetEnumerator() that returns an IEnumerator. IEnumerator provides the power to iterate through the collection by exposing a Current property and Move Next and Reset methods if we don’t have this interface as a parent so we can’t use iteration by foreach loop or can’t use that class object in our LINQ query.
21. What is the difference between late binding and early binding in C#?
Early Binding and Late Binding concepts belong to polymorphism in C#. Polymorphism is the feature of object-oriented programming that allows a language to use the same name in different forms. For example, a method named Add can add integers, doubles, and decimals.
Polymorphism we have 2 different types to achieve that:
- Compile Time also known as Early Binding or Overloading.
- Run Time is also known as Late Binding or Overriding.
Compile Time Polymorphism or Early Binding
In Compile time polymorphism or Early Binding, we will use multiple methods with the same name but different types of parameters, or maybe the number of parameters. Because of this, we can perform different-different tasks with the same method name in the same class which is also known as Method overloading.
See how we can do that in the following example:
Run Time Polymorphism or Late Binding
Run time polymorphism is also known as late binding. In Run Time Polymorphism or Late Binding, we can use the same method names with the same signatures, which means the same type or the same number of parameters, but not in the same class because the compiler doesn’t allow for that at compile time. Therefore, we can use that bind at run time in the derived class when a child class or derived class object will be instantiated. That’s why we call it Late Binding. We have to create my parent class functions as partial and in driver or child class as override functions with the override keyword.
Example
22. What are the differences between IEnumerable and IQueryable?
Before we go into the differences, let's learn what the IEnumerable and IQueryable are.
IEnumerable
Is the parent interface for all non-generic collections in System.Collections namespace like ArrayList, HastTable, etc. that can be enumerated. The generic version of this interface is IEnumerable<T>, which a parent interface of all generic collections class in System.Collections.Generic namespace, like List<> and more.
IQueryable
As per MSDN, the IQueryable interface is intended for implementation by query providers. It is only supposed to be implemented by providers that also implement IQueryable<T>. If the provider does not also implement IQueryable<T>, the standard query operators cannot be used on the provider's data source.
The IQueryable interface inherits the IEnumerable interface so that if it represents a query, the results of that query can be enumerated. Enumeration causes the expression tree associated with an IQueryable object to be executed. The definition of "executing an expression tree" is specific to a query provider. For example, it may involve translating the expression tree to an appropriate query language for the underlying data source. Queries that do not return enumerable results are executed when the Execute method is called.
23. What happens if the inherited interfaces have conflicting method names?
If we implement multiple interfaces in the same class with conflict method names, we don’t need to define all. In other words, we can say if we have conflict methods in the same class, we can’t implement their body independently in the same class because of the same name and same signature. Therefore, we have to use the interface name before the method name to remove this method confiscation. Let’s see an example:
-
interface testInterface1 {
-
void Show();
-
}
-
interface testInterface2 {
-
void Show();
-
}
-
class Abc: testInterface1,
-
testInterface2 {
-
void testInterface1.Show() {
-
Console.WriteLine("For testInterface1 !!");
-
}
-
void testInterface2.Show() {
-
Console.WriteLine("For testInterface2 !!");
-
}
-
}
Now see how to use these in a class:
-
class Program {
-
static void Main(string[] args) {
-
testInterface1 obj1 = new Abc();
-
testInterface1 obj2 = new Abc();
-
obj1.Show();
-
obj2.Show();
-
Console.ReadLine();
-
}
-
}
Output
24. What are the Arrays in C#?
In C#, an array index starts at zero. That means the first item of an array starts at the 0
th position. The position of the last item on an array will total the number of items - 1. So if an array has 10 items, the last 10
th item is in the 9
th position.
In C#, arrays can be declared as fixed-length or dynamic.
A fixed-length array can store a predefined number of items.
A dynamic array does not have a predefined size. The size of a dynamic array increases as you add new items to the array. You can declare an array of fixed length or dynamic. You can even change a dynamic array to static after it is defined.
Let's take a look at simple declarations of arrays in C#. The following code snippet defines the simplest dynamic array of integer types that do not have a fixed size.
int[] intArray;
As you can see from the above code snippet, the declaration of an array starts with a type of array followed by a square bracket ([]) and the name of the array.
The following code snippet declares an array that can store 5 items only starting from index 0 to 4.
-
int[] intArray;
-
intArray = new int[5];
The following code snippet declares an array that can store 100 items starting from index 0 to 99.
-
int[] intArray;
-
intArray = new int[100];
25. What is the Constructor Chaining in C#?
Constructor chaining is a way to connect two or more classes in a relationship as Inheritance. In Constructor Chaining, every child class constructor is mapped to a parent class Constructor implicitly by base keyword, so when you create an instance of the child class, it will call the parent’s class Constructor. Without it, inheritance is not possible.
26. What’s the difference between the Array.CopyTo() and Array.Clone()?
The Array.Clone() method creates a shallow copy of an array. A shallow copy of an Array copies only the elements of the Array, whether they are reference types or value types, but it does not copy the objects that the references refer to. The references in the new Array point to the same objects that the references in the original Array point to.
The CopyTo() static method of the Array class copies a section of an array to another array. The CopyTo method copies all the elements of an array to another one-dimension array. The code listed in Listing 9 copies contents of an integer array to an array of object types.
Learn more about arrays here,
Working with Arrays in C#.
27. Can Multiple Catch Blocks be executed in C#?
We can use multiple catch blocks with a try statement. Each catch block can catch a different exception. The following code example shows how to implement multiple catch statements with a single try statement.
-
using System;
-
class MyClient {
-
public static void Main() {
-
int x = 0;
-
int div = 0;
-
try {
-
div = 100 / x;
-
Console.WriteLine("Not executed line");
-
} catch (DivideByZeroException de) {
-
Console.WriteLine("DivideByZeroException");
-
} catch (Exception ee) {
-
Console.WriteLine("Exception");
-
} finally {
-
Console.WriteLine("Finally Block");
-
}
-
Console.WriteLine("Result is {0}", div);
-
}
-
}
28. What are Singleton Design Patterns and how to implement them in C#?
What is a Singleton Design Pattern?
- Ensures a class has only one instance and provides a global point of access to it.
- A Singleton is a class that only allows a single instance of itself to be created and usually gives simple access to that instance.
- Most commonly, singletons don't allow any parameters to be specified when creating the instance since the second request of an instance with a different parameter could be problematic! (If the same instance should be accessed for all requests with the same parameter then the factory pattern is more appropriate.)
- There are various ways to implement the Singleton Pattern in C#. The following are the common characteristics of a Singleton Pattern.
- A single constructor, that is private and parameterless.
- The class is sealed.
- A static variable that holds a reference to the single created instance, if any.
- A public static means of getting the reference to the single created instance, creating one if necessary.
Example of how to write code with Singleton:
-
namespace Singleton {
-
class Program {
-
static void Main(string[] args) {
-
Calculate.Instance.ValueOne = 10.5;
-
Calculate.Instance.ValueTwo = 5.5;
-
Console.WriteLine("Addition : " + Calculate.Instance.Addition());
-
Console.WriteLine("Subtraction : " + Calculate.Instance.Subtraction());
-
Console.WriteLine("Multiplication : " + Calculate.Instance.Multiplication());
-
Console.WriteLine("Division : " + Calculate.Instance.Division());
-
Console.WriteLine("n----------------------n");
-
Calculate.Instance.ValueTwo = 10.5;
-
Console.WriteLine("Addition : " + Calculate.Instance.Addition());
-
Console.WriteLine("Subtraction : " + Calculate.Instance.Subtraction());
-
Console.WriteLine("Multiplication : " + Calculate.Instance.Multiplication());
-
Console.WriteLine("Division : " + Calculate.Instance.Division());
-
Console.ReadLine();
-
}
-
}
-
public sealed class Calculate {
-
private Calculate() {}
-
private static Calculate instance = null;
-
public static Calculate Instance {
-
get {
-
if (instance == null) {
-
instance = new Calculate();
-
}
-
return instance;
-
}
-
}
-
public double ValueOne {
-
get;
-
set;
-
}
-
public double ValueTwo {
-
get;
-
set;
-
}
-
public double Addition() {
-
return ValueOne + ValueTwo;
-
}
-
public double Subtraction() {
-
return ValueOne - ValueTwo;
-
}
-
public double Multiplication() {
-
return ValueOne * ValueTwo;
-
}
-
public double Division() {
-
return ValueOne / ValueTwo;
-
}
-
}
-
}
29. Difference between Throw Exception and Throw Clause
The basic difference is that the Throw exception overwrites the stack trace. This makes it hard to find the original code line number that has thrown the exception.
Throw basically retains the stack information and adds to the stack information in the exception that it is thrown.
Let's see what it means to better understand the differences. I am using a console application to easily test and see how the usage of the two differ in their functionality.
-
using System;
-
using System.Collections.Generic;
-
using System.Linq;
-
using System.Text;
-
namespace TestingThrowExceptions {
-
class Program {
-
public void ExceptionMethod() {
-
throw new Exception("Original Exception occurred in ExceptionMethod");
-
}
-
static void Main(string[] args) {
-
Program p = new Program();
-
try {
-
p.ExceptionMethod();
-
} catch (Exception ex) {
-
throw ex;
-
}
-
}
-
}
-
}
30. What are Indexers in C#?
C# introduces a new concept known as Indexers which are used for treating an object as an array. The indexers are usually known as smart arrays in C#. They are not an essential part of object-oriented programming.
Defining an indexer allows you to create classes that act as virtual arrays. Instances of that class can be accessed using the [] array access operator.
Creating an Indexer
-
< modifier > <
-
return type > this[argument list] {
-
get {
-
-
}
-
set {
-
-
}
-
}
In the above code,
<modifier>
can be private, public, protected or internal.
<return type>
can be any valid C# types.
To learn more about indexers in C#, visit
Indexers in C#.
31. What is a multicast delegate in C#?
Delegate is one of the base types in .NET. Delegate is a class that is used to create and invoke delegates at runtime.
A delegate in C# allows developers to treat methods as objects and invoke them from their code.
Implement Multicast Delegates Example:
-
using System;
-
using System.Collections.Generic;
-
using System.Linq;
-
using System.Text;
-
delegate void MDelegate();
-
class DM {
-
static public void Display() {
-
Console.WriteLine("Meerut");
-
}
-
static public void print() {
-
Console.WriteLine("Roorkee");
-
}
-
}
-
class MTest {
-
public static void Main() {
-
MDelegate m1 = new MDelegate(DM.Display);
-
MDelegate m2 = new MDelegate(DM.print);
-
MDelegate m3 = m1 + m2;
-
MDelegate m4 = m2 + m1;
-
MDelegate m5 = m3 - m2;
-
m3();
-
m4();
-
m5();
-
}
-
}
32. Difference between the Equality Operator (==) and Equals() Method in C#
Both the == Operator and the Equals() method are used to compare two value type data items or reference type data items. The Equality Operator (==) is the comparison operator and the Equals() method compares the contents of a string. The == Operator compares the reference identity while the Equals() method compares only contents. Let’s see with some examples.
In this example, we assigned a string variable to another variable. A string is a reference type and in the following example, a string variable is assigned to another string variable so they are referring to the same identity in the heap and both have the same content so you get True output for both the == Operator and the Equals() method.
-
using System;
-
namespace ComparisionExample {
-
class Program {
-
static void Main(string[] args) {
-
string name = "sandeep";
-
string myName = name;
-
Console.WriteLine("== operator result is {0}", name == myName);
-
Console.WriteLine("Equals method result is {0}", name.Equals(myName));
-
Console.ReadKey();
-
}
-
}
-
}
33. What's the Difference between the Is and As operator in C#
"is" operator
In C# language, we use the "is" operator to check the object type. If two objects are of the same type, it returns true, else it returns false.
Let's understand this in our C# code. We declare two classes, Speaker and Author.
-
class Speaker {
-
public string Name {
-
get;
-
set;
-
}
-
}
-
class Author {
-
public string Name {
-
get;
-
set;
-
}
-
}
Now, let's create an object of type Speaker:
-
var speaker = new Speaker { Name="Gaurav Kumar Arora"};
Now, let’s check if the object is Speaker type:
-
var isTrue = speaker is Speaker;
In the preceding, we are checking the matching type. Yes, our speaker is an object of Speaker type.
-
Console.WriteLine("speaker is of Speaker type:{0}", isTrue);
So, the results are true.
But, here we get false:
-
var author = new Author { Name = "Gaurav Kumar Arora" };
-
var isTrue = speaker is Author;
-
Console.WriteLine("speaker is of Author type:{0}", isTrue);
Because our speaker is not an object of Author type.
"as" operator
The "as" operator behaves in a similar way as the "is" operator. The only difference is it returns the object if both are compatible with that type. Else it returns a null.
Let's understand this in our C# code.
-
public static string GetAuthorName(dynamic obj)
-
{
-
Author authorObj = obj as Author;
-
return (authorObj != null) ? authorObj.Name : string.Empty;
-
}
We have a method that accepts a dynamic object and returns the object name property if the object is of the Author type.
Here, we’ve declared two objects:
-
var speaker = new Speaker { Name="Gaurav Kumar Arora"};
-
var author = new Author { Name = "Gaurav Kumar Arora" };
The following returns the "Name" property:
-
var authorName = GetAuthorName(author);
-
Console.WriteLine("Author name is:{0}", authorName);
It returns an empty string:
-
authorName = GetAuthorName(speaker);
-
Console.WriteLine("Author name is:{0}", authorName);
34. How to use Nullable<> Types in C#?
A nullable type is a data type is that contains the defined data type or the null value.
This nullable type concept is not compatible with "var".
Any data type can be declared nullable type with the help of operator "?".
For example, the following code declares the int 'i' as a null.
As discussed in the previous section "var" is not compatible with nullable types. So, if you declare the following, you will get an error.
35. What are Different Ways a Method can be Overloaded?
Method overloading is a way to achieve compile-time polymorphism where we can use a method with the same name but different signatures. For example, the following code example has a method volume with three different signatures based on the number and type of parameters and return values.
Example
-
using System;
-
using System.Collections.Generic;
-
using System.Linq;
-
using System.Text;
-
-
namespace Hello_Word {
-
class overloding {
-
public static void Main() {
-
Console.WriteLine(volume(10));
-
Console.WriteLine(volume(2.5F, 8));
-
Console.WriteLine(volume(100L, 75, 15));
-
Console.ReadLine();
-
}
-
-
static int volume(int x) {
-
return (x * x * x);
-
}
-
-
static double volume(float r, int h) {
-
return (3.14 * r * r * h);
-
}
-
-
static long volume(long l, int b, int h) {
-
return (l * b * h);
-
}
-
}
-
}
Note
If we have a method that has two parameter object type and has the same name method with two integer parameters, when we call that method with int value, it will call that method with integer parameters instead of the object type parameters method.
Read the following article to learn more here,
Method Overloading in C#.
36. What is an Object Pool in .Net?
Object Pooling in .NET allows objects to keep in the memory pool so the objects can be reused without recreating them. This article explains what object pooling is in .NET and how to implement object pooling in C#.
What does it mean?
Object Pool is a container of objects that are ready for use. Whenever there is a request for a new object, the pool manager will take the request and it will be served by allocating an object from the pool.
How does it work?
We are going to use the Factory pattern for this purpose. We will have a factory method, which will take care of the creation of objects. Whenever there is a request for a new object, the factory method will look into the object pool (we use Queue object). If there is any object available within the allowed limit, it will return the object (value object), otherwise, a new object will be created and give you back.
37. What are Generics in C#?
Generics allow you to delay the specification of the data type of programming elements in a class or a method until it is actually used in the program. In other words, generics allow you to write a class or method that can work with any data type.
You write the specifications for the class or the method, with substitute parameters for data types. When the compiler encounters a constructor for the class or a function call for the method, it generates code to handle the specific data type.
Generic classes and methods combine reusability, type safety and efficiency in a way that their non-generic counterparts cannot. Generics are most frequently used with collections and the methods that operate on them. Version 2.0 of the .NET Framework class library provides a new namespace, System.Collections.Generic, that contains several new generic-based collection classes. It is recommended that all applications that target the .NET Framework 2.0 and later use the new generic collection classes instead of the older non-generic counterparts such as ArrayList.
Features of Generics
Generics are a technique that enriches your programs in the following ways:
- It helps you to maximize code reuse, type safety, and performance.
- You can create generic collection classes. The .NET Framework class library contains several new generic collection classes in the System.Collections.Generic namespace. You may use these generic collection classes instead of the collection classes in the System.Collections namespace.
- You can create your own generic interfaces, classes, methods, events, and delegates.
- You may create generic classes constrained to enable access to methods on specific data types.
- You may get information on the types used in a generic data type at run-time using reflection.
38. Describe Accessibility Modifiers in C#
Access modifiers are keywords used to specify the declared accessibility of a member or a type.
Access modifiers are keywords used to specify the scope of accessibility of a member of a type or the type itself. For example, a public class is accessible to the entire world, while an internal class may be accessible to the assembly only.
Why use access modifiers?
Access modifiers are an integral part of object-oriented programming. Access modifiers are used to implement the encapsulation of OOP. Access modifiers allow you to define who does or who doesn't have access to certain features.
In C# there are 6 different types of Access Modifiers:
| Modifier |
Description
|
| public |
There are no restrictions on accessing public members. |
| private |
Access is limited to within the class definition. This is the default access modifier type if none is formally specified |
| protected |
Access is limited to within the class definition and any class that inherits from the class |
| internal |
Access is limited exclusively to classes defined within the current project assembly |
| protected internal |
Access is limited to the current assembly and types derived from the containing class. All members in the current project and all members in derived class can access the variables. |
| private protected |
Access is limited to the containing class or types derived from the containing class within the current assembly. |
39. What is a Virtual Method in C#?
A virtual method is a method that can be redefined in derived classes. A virtual method has an implementation in a base class as well as derived the class. It is used when a method's basic functionality is the same but sometimes more functionality is needed in the derived class. A virtual method is created in the base class that can be overridden in the derived class. We create a virtual method in the base class using the virtual keyword and that method is overridden in the derived class using the override keyword.
When a method is declared as a virtual method in a base class then that method can be defined in a base class and it is optional for the derived class to override that method. The overriding method also provides more than one form for a method. Hence, it is also an example of polymorphism.
When a method is declared as a virtual method in a base class and that method has the same definition in a derived class then there is no need to override it in the derived class. But when a virtual method has a different definition in the base class and the derived class then there is a need to override it in the derived class.
When a virtual method is invoked, the run-time type of the object is checked for an overriding member. The overriding member in the most derived class is called, which might be the original member if no derived class has overridden the member.
Virtual Method
- By default, methods are non-virtual. We can't override a non-virtual method.
- We can't use the virtual modifier with static, abstract, private or override modifiers.
40. What is the Difference between an Array and ArrayList in C#?
Here is a list of differences between the two:
41. What are Value types and Reference types in C#?
In C#, data types can be of two types, value types, and reference types. Value type variables contain their object (or data) directly. If we copy one value type variable to another then we are actually making a copy of the object for the second variable. Both of them will independently operate on their values, Value type data types are stored on a stack and reference data types are stored on a heap.
In C#, basic data types include int, char, bool, and long, which are value types. Classes and collections are reference types.
42. What is Serialization in C#?
Serialization in C# is the process of converting an object into a stream of bytes to store the object to memory, a database, or a file. Its main purpose is to save the state of an object in order to be able to recreate it when needed. The reverse process is called deserialization.
There are three types of serialization,
- Binary serialization (Save your object data into binary format).
- Soap Serialization (Save your object data into binary format; mainly used in network-related communication).
- XmlSerialization (Save your object data into an XML file).
43. How do you use the “using” statement in C#?
There are two ways to use the using keyword in C#. One is as a directive and the other is as a statement. Let's explain!
- using Directive
Generally, we use the using keyword to add namespaces in code-behind and class files. Then it makes available all the classes, interfaces and abstract classes and their methods and properties on the current page. Adding a namespace can be done in the following two ways:
- Using Statement
This is another way to use the using keyword in C#. It plays a vital role in improving performance in Garbage Collection.
44. What is a Jagged Array in C#?
A jagged array is an array whose elements are arrays. The elements of a jagged array can be of different dimensions and sizes. A jagged array is sometimes called an "array of arrays."
A special type of array is introduced in C#. A Jagged Array is an array of an array in which the length of each array index can differ.
Example
-
int[][] jagArray = new int[5][];
In the above declaration, the rows are fixed in size. But columns are not specified as they can vary.
Declaring and initializing a jagged array.
-
int[][] jaggedArray = new int[5][];
-
jaggedArray[0] = new int[3];
-
jaggedArray[1] = new int[5];
-
jaggedArray[2] = new int[2];
-
jaggedArray[3] = new int[8];
-
jaggedArray[4] = new int[10];
-
jaggedArray[0] = new int[] { 3, 5, 7, };
-
jaggedArray[1] = new int[] { 1, 0, 2, 4, 6 };
-
jaggedArray[2] = new int[] { 1, 6 };
-
jaggedArray[3] = new int[] { 1, 0, 2, 4, 6, 45, 67, 78 };
- jaggedArray[4] = new int[] { 1, 0, 2, 4, 6, 34, 54, 67, 87, 78 };
45. What is Multithreading with .NET?
Multithreading allows a program to run multiple threads concurrently. This article explains how multithreading works in .NET. This article covers the entire range of threading areas from thread creation, race conditions, deadlocks, monitors, mutexes, synchronization and semaphores and so on.
The real usage of a thread is not about a single sequential thread, but rather using multiple threads in a single program. Multiple threads running at the same time and performing various tasks are referred to as Multithreading. A thread is considered to be a lightweight process because it runs within the context of a program and takes advantage of the resources allocated for that program.
A single-threaded process contains only one thread while a multithreaded process contains more than one thread for execution.
To learn more about threading in .NET, visit,
Multithreading with .NET
46. What are Anonymous Types in C#?
Anonymous types allow us to create new types without defining them. This is a way of defining read-only properties in a single object without having to define each type explicitly. Here, Type is generated by the compiler and is accessible only for the current block of code. The type of properties is also inferred by the compiler.
We can create anonymous types by using “new” keyword together with the object initializer.
Example
-
var anonymousData = new
-
{
-
ForeName = "Jignesh",
-
SurName = "Trivedi"
-
};
-
Console.WriteLine("First Name : " + anonymousData.ForeName);
Anonymous Types with LINQ Example
Anonymous types are also used with the "Select" clause of LINQ query expression to return a subset of properties.
Example
If any object collection has properties calling FirstName, LastName, DOB, etc... and you want only FirstName and LastName after the Querying the data, then:
-
class MyData {
-
public string FirstName {
-
get;
-
set;
-
}
-
public string LastName {
-
get;
-
set;
-
}
-
public DateTime DOB {
-
get;
-
set;
-
}
-
public string MiddleName {
-
get;
-
set;
-
}
-
}
-
static void Main(string[] args) {
-
-
List < MyData > data = new List < MyData > ();
-
data.Add(new MyData {
-
FirstName = "Jignesh", LastName = "Trivedi", MiddleName = "G", DOB = new DateTime(1990, 12, 30)
-
});
-
data.Add(new MyData {
-
FirstName = "Tejas", LastName = "Trivedi", MiddleName = "G", DOB = new DateTime(1995, 11, 6)
-
});
-
data.Add(new MyData {
-
FirstName = "Rakesh", LastName = "Trivedi", MiddleName = "G", DOB = new DateTime(1993, 10, 8)
-
});
-
data.Add(new MyData {
-
FirstName = "Amit", LastName = "Vyas", MiddleName = "P", DOB = newDateTime(1983, 6, 15)
-
});
-
data.Add(new MyData {
-
FirstName = "Yash", LastName = "Pandiya", MiddleName = "K", DOB = newDateTime(1988, 7, 20)
-
});
-
}
-
var anonymousData = from pl in data
-
select new {
-
pl.FirstName, pl.LastName
-
};
-
foreach(var m in anonymousData) {
-
Console.WriteLine("Name : " + m.FirstName + " " + m.LastName);
-
}
-
}
47. What is a Hashtable in C#?
A Hashtable is a collection that stores (Keys, Values) pairs. Here, the Keys are used to find the storage location and is immutable and cannot have duplicate entries in a Hashtable. The .Net Framework has provided a Hash Table class that contains all the functionality required to implement a hash table without any additional development. The hash table is a general-purpose dictionary collection. Each item within the collection is a DictionaryEntry object with two properties: a key object and a value object. These are known as Key/Value. When items are added to a hash table, a hash code is generated automatically. This code is hidden from the developer. Access to the table's values is achieved using the key object for identification. As the items in the collection are sorted according to the hidden hash code, the items should be considered to be randomly ordered.
The Hashtable Collection
The Base Class libraries offer a Hashtable Class that is defined in the System.Collections namespace, so you don't have to code your own hash tables. It processes each key of the hash that you add every time and then uses the hash code to look up the element very quickly. The capacity of a hash table is the number of elements the hash table can hold. As elements are added to a hash table, the capacity is automatically increased as required through reallocation. It is an older .Net Framework type.
Declaring a Hashtable
The Hashtable class is generally found in the namespace called System.Collections. So to execute any of the examples, we have to add using System.Collections; to the source code. The declaration for the Hashtable is:
-
Hashtable HT = new Hashtable ();
48. What is LINQ in C#?
LINQ stands for Language Integrated Query. LINQ is a data querying methodology that provides querying capabilities to .NET languages with a syntax similar to a SQL query.
LINQ has a great power of querying on any source of data. The data source could be collections of objects, database or XML files. We can easily retrieve data from any object that implements the IEnumerable<T> interface.
Advantages of LINQ
- LINQ offers an object-based, language-integrated way to query over data no matter where that data came from. So through LINQ, we can query a database and XML as well as collections.
- Compile-time syntax checking.
It allows you to query collections like arrays, enumerable classes, etc... in the native language of your application, like in VB or C# in much the same way you would query a database using SQL.
49. What is File Handling in C#.Net?
 The Directory and File directly extend System.Object and supports the creation, copying, moving and deletion of files using various static methods. They only contain static methods and are never instantiated. The FileInfo and DirecotryInfo types are derived from the abstract class FileSystemInfo type and they are typically employed for obtaining the full details of a file or directory because their members tend to return strongly typed objects. They implement roughly the same public methods as a Directory and a File but they are stateful and members of these classes are not static.
50. What is Reflection in C#?
Reflection is the process of runtime type discovery to inspect metadata, CIL code, late binding, and self-generating code. At the run time by using reflection, we can access the same "type" information as displayed by the ildasm utility at design time. The reflection is analogous to reverse engineering in which we can break an existing *.exe or *.dll assembly to explore defined significant contents information, including methods, fields, events, and properties.
You can dynamically discover the set of interfaces supported by a given type using the System.Reflection namespace.
Reflection typically is used to dump out the loaded assemblies list, their reference to inspect methods, properties etcetera. Reflection is also used in the external disassembling tools such as Reflector, Fxcop, and NUnit because .NET tools don't need to parse the source code similar to C++.
Metadata Investigation
The following program depicts the process of reflection by creating a console-based application. This program will display the details of the fields, methods, properties, and interfaces for any type within the mscorlib.dll assembly. Before proceeding, it is mandatory to import "System.Reflection".
Here, we are defining a number of static methods in the program class to enumerate fields, methods, and interfaces in the specified type. The static method takes a single "System.Type" parameter and returns void.
-
static void FieldInvestigation(Type t) {
-
Console.WriteLine("*********Fields*********");
-
FieldInfo[] fld = t.GetFields();
-
foreach(FieldInfo f in fld) {
-
Console.WriteLine("-->{0}", f.Name);
-
}
-
}
-
-
static void MethodInvestigation(Type t) {
-
Console.WriteLine("*********Methods*********");
-
MethodInfo[] mth = t.GetMethods();
-
foreach(MethodInfo m in mth) {
-
Console.WriteLine("-->{0}", m.Name);
-
}
-
}
More Interview Questions: