jjzjj

Initialization

全部标签

c# - 使用 DataContractSerializer 时设置属性的初始值

如果我使用DataContractSerializer序列化并稍后反序列化一个类,我如何控制未序列化的属性的初始值?考虑下面的Person类。它的数据协定设置为序列化FirstName和LastName属性,但不序列化IsNew属性。我希望IsNew初始化为TRUE,无论是将新Person实例化为新实例还是从文件反序列化。这很容易通过构造函数完成,但据我所知,DataContractSerializer不会调用构造函数,因为它们可能需要参数。[DataContract(Name="Person")]publicclassPerson{[DataMember(Name="FirstNam

c# - 在 C# 中初始化多维数组(与其他数组)

在C#中,可以使用常量初始化多维数组,如下所示:Object[,]twodArray=newObject[,]{{"00","01","02"},{"10","11","12"},{"20","21","22"}};我个人认为用硬编码常量初始化数组对于测试练习以外的任何事情都是无用的。无论如何,我迫切需要做的是使用现有数组如上所述初始化一个新的多维数组。(它们具有相同的项目计数,但内容当然只在运行时定义)。我想做的一个示例是。Object[]first=newObject[]{"00","01","02"};Object[]second=newObject[]{"10","11","1

c# - 整个程序集的静态构造函数

我的程序集中有许多入口点,我希望在运行此程序集中的任何其他代码之前,每个AppDomain执行一次一些初始化代码。最好的方法是什么?我看到的一个解决方案是拥有一个带有静态构造函数的类,并继承我从中获得的每个入口点。像这样:publicclassInitializer{staticInitializer(){EnsureInitialized();//Callsinitializationcodeonceandonlyonce}}publicclassEntryPointOne:Initializer,IEntryPoint{//Somecodehere}publicclassEntry

c# - 在 C# 中填充大数组的更好/更快的方法

我有3个*.dat文件(346KB、725KB、1762KB),其中填充了“大”int数组的json字符串。每次(多次)创建对象时,我都会获取这三个文件并使用JsonConvert.DeserializeObject将数组反序列化为对象。我考虑过使用二进制文件而不是json字符串,或者我什至可以直接保存这些数组吗?我不需要使用这些文件,它只是当前保存数据的位置。我很乐意切换到更快的任何东西。加速这些对象初始化的不同方法有哪些? 最佳答案 最快的方法是手动序列化数据。一个简单的方法是创建一个FileStream,然后将其包装在Bina

c# - 使用初始化 block 不好吗

您好,我在C#中使用初始化程序blocknewSomething{foo=1,bar=2};但人们说这是不好的做法。我不认为这是错误的,是吗? 最佳答案 您需要问问自己,您的类型是否应该是可变的。就我个人而言,我喜欢不可变类型——它们更容易推理正在发生的事情,更容易验证(一旦构造函数被调用并且状态被验证,你知道它不会变得无效)并且它们非常适合并发。另一方面,对象初始值设定项在合理使用可变类型的情况下肯定有用。例如,ProcessStartInfo被有效地用作Process的构建器类型。能够编写是很有用的:varinfo=newPro

c# - 将字符串数组加载到 List<int> 中最优雅的方法是什么?

考虑一个包含数值的字符串数组:string[]intArray={"25","65","0"};将数字加载到List中的最优雅的方法是什么?不使用for或while遍历intArray? 最佳答案 您可以使用Enumerable.Select方法ListintList=intArray.Select(str=>int.Parse(str)).ToList(); 关于c#-将字符串数组加载到List中最优雅的方法是什么?,我们在StackOverflow上找到一个类似的问题:

c# - 只读 HashSet 本身是线程安全的吗?

如果我初始化一个HashSet在Lazy里面初始化程序,然后从不更改内容,是HashSet本质上是线程安全的?是否有需要锁定的读取操作?类似的Java问题here对于一般的集合,这基本上是肯定的,但有一些警告(不适用于这种情况)。 最佳答案 是的,是的。只要施工了HashSet对象是线程安全的,只要内容不变,访问它就始终是线程安全的。如果你initializeLazy使用LazyThreadSafetyMode.PublicationOnly你可以确定Lazy的初始化是线程安全的。Whenmultiplethreadstrytoin

c# - 反序列化后初始化私有(private)只读字段

我需要在反序列化后初始化私有(private)只读字段。我有以下数据契约(Contract):[DataContract]publicclassItem{publicItem(){//ConstructornotcalledatDeserialization//becauseofFormatterServices.GetUninitializedObjectisused//sofieldwillnotbeinitializedbyconstructoratDeserialization_privateReadonlyField=newobject();}//Initialization

C# - 初始化程序中类字段的闭包?

考虑以下代码:usingSystem;namespaceConsoleApplication2{classProgram{staticvoidMain(string[]args){varsquare=newSquare(4);Console.WriteLine(square.Calculate());}}classMathOp{protectedMathOp(Funccalc){_calc=calc;}publicintCalculate(){return_calc();}privateFunc_calc;}classSquare:MathOp{publicSquare(intoper

c# - InitializeComponent() 的非常简单的定义;方法

我一直在阅读HeadFirstC#一书,并使用了InitializeComponent();方法多次。这方面的一个例子是在PartyPlanner练习中我创建了一个名为DinnerParty.cs的类,然后在Form1.cs中使用了这段代码publicForm1(){InitializeComponent();dinnerParty=newDinnerParty(){NumberOfPeople=5};dinnerParty.SetHealthyOption(checkBox2.Checked);dinnerParty.CalculateCostOfDecorations(checkB