我以为我会把这个垒球提供给任何想要从公园里击出的人.什么是泛型,泛型的优点是什么,为什么,在哪里,我应该如何使用它们?请保持相当基本.谢谢.
我想让人的中间名可选.我一直在使用C#.net代码的第一种方法.对于整数数据类型,只需使用?运算符使其可以为空即可.我正在寻找一种让我的sting变量可以为空的方法.我试图搜索但找不到让它可以为空的方法.
以下是我的代码.请建议我如何让它可以为空.
public class ChildrenInfo
{
[Key]
public int ChidrenID { get; set; }
[Required]
[Display(Name ="First Name")]
[StringLength(50,ErrorMessage ="First Name cannot exceed more than 50 characters")]
[RegularExpression(@"^[A-Z]+[a-z]*$",ErrorMessage ="Name cannot have special character,numbers or space")]
[Column("FName")]
public string CFName { get; set; }
[Display(Name ="Middle Name")]
[RegularExpression(@"^[A-Z]+[a-z]*$",ErrorMessage ="Middle Name cannot have special character,numbers or space")]
[StringLength(35,ErrorMessage ="Middle Name cannot have more than 35 characters")]
[Column("MName")]
public string? CMName { get; set; }
}
Run Code Online (Sandbox Code Playgroud) 我听到以下声明:
我们可以说class是数据类型或数据类型是一种类.
任何人都可以向我解释这究竟是什么意思?
我知道一些差异,
我错过了还有其他的区别......如果是的话,他们是什么?
此代码段来自C#2010 for Dummies.令我困惑的是,当使用Array.Sort()方法时,我的数组副本(sortedNames)和原始数组(行星)都会被排序,即使它只调用sortedNames上的Sort方法.
第二个foreach循环引用哪个数组无关紧要,输出是相同的.
static void Main(string[] args)
{
Console.WriteLine("The 5 planets closest to the sun, in order: ");
string[] planets = new string[] { "Mercury","Venus", "Earth", "Mars", "Jupiter"};
foreach (string planet in planets)
{
Console.WriteLine("\t" + planet);
}
Console.WriteLine("\nNow listed alphabetically: ");
string[] sortedNames = planets;
Array.Sort(sortedNames);
foreach (string planet in planets)
{
Console.WriteLine("\t" + planet);
}
}
Run Code Online (Sandbox Code Playgroud) 经典的一般C#事件具有以下参数:
(object sender, EventArgs e)
Run Code Online (Sandbox Code Playgroud)
我可以为e参数实现一个具有更具体签名的事件,派生EventArgs.
现在,基类的目的是什么EventArgs?我的意思是......它是空的.没有基础/抽象/虚拟属性,也没有字段或其他内容.
为什么基本事件的参数不像下面那样?
(object sender, object eventArgs)
Run Code Online (Sandbox Code Playgroud)
也就是说,为什么所有带有一些已实现和特定的event-args参数的事件都是EventArgs从一个简单的派生而不是从一个简单派生出来的object?
上述问题与以下问题相对应.通用表单中的事件委托是:
delegate void EventHandler<TEventArgs>(object sender, TEventArgs e)
Run Code Online (Sandbox Code Playgroud)
并且对参数没有限制e.但是我会期待类似的东西where TEventArgs : EventArgs,一致......
首先,如果听起来太愚蠢,我道歉.但我总是发现自己提出以下问题.
由于对象类是.Net中所有类的最终基类,而类是引用类型,引用类型存储在堆上,因此甚至可以进入堆栈.我知道原始类型存储在堆栈中,这就是我感到困惑的地方.
以int32为例,如果它的一个类及其基类是object,那么它的引用类型应该在堆上.怎么去堆叠.
如果它不是一个类,那么我们怎么能这样做
int i = 1;
object obj = i;
Run Code Online (Sandbox Code Playgroud)
既然我做不了类似的事情
int i = 1;
MyClass myObj = i;
Run Code Online (Sandbox Code Playgroud)
编辑
从我得到的答案来看,int是结构而不是类.仍然令人困惑的是值类型的基类是如何引用类型(对象)而它的值类型不是引用类型.
另一点是"属于类的值类型不会存储在堆栈中",我想一切都在类中,甚至是控制台程序中的Main方法.对我来说,这意味着所有变量都以某种方式属于一个类?那他们怎么去堆叠?
我想知道何时以及为什么引用在C#中被破坏了?
以下代码示例突出显示了此:
StringBuilder a = null, b = null;
a = new StringBuilder("a");
b = a;
b.Append("b");
b = null;
Console.WriteLine(a != null? a.ToString() : "null");
Console.WriteLine(b != null ? b.ToString() : "null");
//Output:
ab
null
Run Code Online (Sandbox Code Playgroud)
为什么,在这个例子中,是b的参考a不会导致a要null呢?
我正在学习C#,基本上知道数组和Lists 之间的区别,最后一个是通用的,可以动态增长,但我想知道:
List元件顺序地位于堆状阵列或位于"随机"在不同的位置的每个元素?Lists 快一点?