C# 1001 notes
6.51K subscribers
329 photos
9 videos
2 files
313 links
Регулярные короткие заметки по C# и .NET.

Просто о сложном для каждого.

admin - @haarrp
加入频道
📝 What is the difference between a Struct and a Class in C#?

Class and struct both are the user defined data type but have some major difference:

Struct

🔸 The struct is 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 to other type.

🔸 A structure can't be abstract.

Class

🔸 The class is 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 to other class.

🔸 A class can be abstract type.

🔸 We can create a default constructor.

#post
What will be the output of the following code snippet?
Anonymous Quiz
84%
8
1%
0
11%
2
4%
16
All of these interfaces inherit from IEnumerable. That interface basically lets you use the class in a foreach statement (in C#).

🔸 ICollection is the most basic of the interfaces you listed. It's an enumerable interface that supports a Count and that's about it.

🔸 IList is everything that ICollection is, but it also supports adding and removing items, retrieving items by index, etc. It's the most commonly-used interface for "lists of objects".

🔸 IQueryable is an enumerable interface that supports LINQ. You can always create an IQueryable from an IList and use LINQ to Objects, but you also find IQueryable used for deferred execution of SQL statements in LINQ to SQL and LINQ to Entities.

🔸 IDictionary is a different animal in the sense that it is a mapping of unique keys to values. It is also enumerable in that you can enumerate the key/value pairs, but otherwise it serves a different purpose than the others you listed.

#post
#challenge

💻 Largest Gap | #easy

Given an array of integers, return the largest gap between elements of the sorted version of that array.

Here's an illustrative example. Consider the array:

9, 4, 26, 26, 0, 0, 5, 20, 6, 25, 5

... which, after sorting, becomes the array:

0, 0, 4, 5, 5, 6, 9, 20, 25, 26, 26

... so that we now see that the largest gap in the array is the gap of 11 between 9 and 20.

Examples:

LargestGap(new int[] { 9, 4, 26, 26, 0, 0, 5, 20, 6, 25, 5 }) ➞ 11
// After sorting get { 0, 0, 4, 5, 5, 6, 9, 20, 25, 26, 26 }
// Largest gap of 11 between 9 and 20

LargestGap(new int[] { 14, 13, 7, 1, 4, 12, 3, 7, 7, 12, 11, 5, 7 }) ➞ 4
// After sorting get { 1, 3, 4, 5, 7, 7, 7, 7, 11, 12, 12, 13, 14 }
// Largest gap of 4 between 7 and 11

🏆 Leave your solutions in the comments. The solution will be posted below in a couple of hours 👇

#interview
Here is a solution for the #challenge above

💬 At first blush, it seems tricky but, in my opinion, this solution is really graceful
📝 What is an Abstract Class?

The abstract modifier indicates that the thing being modified has a missing or incomplete implementation. The abstract modifier can be used with classes, methods, properties, indexers, and events.

An Abstract class is a class which is denoted by abstract keyword and can be used only as a Base class.

Abstract classes have the following features:

🔸 An abstract class cannot be instantiated.

🔸 An abstract class may contain abstract methods and accessors.

🔸 It is not possible to modify an abstract class with the sealed modifier because the two modifiers have opposite meanings. The sealed modifier prevents a class from being inherited and the abstract modifier requires a class to be inherited.

🔸 A non-abstract class derived from an abstract class must include actual implementations of all inherited abstract methods and accessors.

#post
What will be the output of the following code snippet?
Anonymous Quiz
4%
1 2 3 4 5
17%
11 12 13 14 15
78%
11 2 13 4 15
1%
1 3 5 7 9
📝 How to implement the Where method in C#?

The
yield keyword actually does quite a lot here. It creates a state machine "under the covers" that remembers where you were on each additional cycle of the function and picks up from there.

The function returns an object that implements the IEnumerable<T> interface. If a calling function starts foreaching over this object, the function is called again until it "yields" result based on some predicate.

This is syntactic sugar introduced in C# 2.0. In earlier versions you had to create your own IEnumerable and IEnumerator objects to do stuff like this.

#post
#challenge

💻 Compounding Letters | #easy

Create a function that takes a string and returns a new string with each new character accumulating by +1. Separate each set with a dash.

Capitalize the first letter of each set.

Examples:

Accum("abcd") ➞ "A-Bb-Ccc-Dddd"
Accum("RqaEzty") ➞ "R-Qq-Aaa-Eeee-Zzzzz-Tttttt-Yyyyyyy"
Accum("cwAt") ➞ "C-Ww-Aaa-Tttt"

🏆 Leave your solutions in the comments. The solution will be posted below in a couple of hours 👇

#interview
Here is a solution for the #challenge above
📝 What is namespace in C#?

A namespace is designed for providing a way to keep one set of names separate from another. The class names declared in one namespace does not conflict with the same class names declared in another.

🔸 NET uses namespaces to organize its many classes.

🔸 Declaring your own namespaces can help you control the scope of class and method names in larger programming projects.

 SampleNamespace
{
class SampleClass
{
public void SampleMethod()
{
System.Console.WriteLine(
"SampleMethod inside SampleNamespace");
}
}
}

#post
What will be the output of the following code snippet?
Anonymous Quiz
33%
5
49%
10
1%
15
17%
Error
📝 How can we check equality in .NET?

🔸 The ReferenceEquals() method - checks if two reference type variables(classes, not structs) are referred to the same memory address.

🔸 The virtual Equals() method. (System.Object) - checks if two objects are equivalent.

🔸 The static Equals() method - is used to handle problems when there is a null value in the check.

🔸 The Equals method from IEquatable interface.

🔸 The comparison operator == - usually means the same as ReferenceEquals, it checks if two variables point to the same memory address. The gotcha is that this operator can be override to perform other types of checks. In strings, for instance, it checks if two different instances are equivalent.

#post
#challenge

💻 Letter Distance | #easy

Given two words, the letter distance is calculated by taking the absolute value of the difference in character codes and summing up the difference.

If one word is longer than another, add the difference in lengths towards the score.

To illustrate:

 "fly") = dist("h", "f") + dist("o", "l") + dist("u", "y") + dist(house.Length, fly.Length)

= |104 - 102| + |111 - 108| + |117 - 121| + |5 - 3|
= 2 + 3 + 4 + 2
= 11

Examples:

LetterDistance("sharp", "sharq") ➞ 1
LetterDistance("abcde", "Abcde") ➞ 32
LetterDistance("abcde", "bcdef") ➞ 5

🏆 Leave your solutions in the comments. The solution will be posted below in a couple of hours 👇

#interview
Here is a solution for the #challenge above
This media is not supported in your browser
VIEW IN TELEGRAM
📝 How we can pass parameters to a method?

There are three ways that parameters can be passed to a method:

🔸 Value parameters − This method copies the actual value of an argument into the formal parameter of the function. In this case, changes made to the parameter inside the function have no effect on the argument.

🔸 Reference parameters − This method copies the reference to the memory location of an argument into the formal parameter. This means that changes made to the parameter affect the argument.

🔸 Output parameters − This method helps in returning more than one value.

#post