Tag: 初始化

C#中的数组连接

如何在C#中使用两个(或更多)其他数组巧妙地初始化数组? double[] d1 = new double[5]; double[] d2 = new double[3]; double[] dTotal = new double[8]; // I need this to be {d1 then d2} 另一个问题:如何有效地连接C#数组?

C#变量初始化问题

我是否初始化整数变量是否有任何区别: int i = 0; int i; 编译器或CLR是否将此视为同一个东西? IIRC,我认为他们都被视为同一件事,但我似乎无法找到这篇文章。

Initialize()vs Constructor()方法,正确用于创建对象

我们都从根本上知道Constructor和用户定义的Initialize()方法之间的区别。 我的问题集中在对象创建的最佳设计实践上。 我们可以将所有Initialize()代码放入Constructor() ,反之亦然(将所有预热代码移动到Initialize方法并从Constructor调用此方法)。 目前,在设计一个新类时,我在constructor()创建任何新实例,并将任何其他预热代码移动到Initialize()方法中。 您认为最好的权衡点是什么?

为什么未自动初始化未分配的局部变量?

似乎没有办法在代码中使用未分配的局部变量或检查它们,因为编译器吐出Use of unassigned local variable错误。 为什么编译器在编译时不对这些变量使用default(T) ? 即使对值类型更难做,在这种情况下,引用类型也可以很容易地初始化为null ,对吧? 这是一些测试代码: public void Test ( ) { int x; string s; if ( x == 5 ) Console.WriteLine ( 5 ); if ( s != null ) Console.WriteLine ( “s” ); } 返回: Use of unassigned local variable ‘x’ Use of unassigned local variable ‘s’ 更新: […]

OnNavigatedTo vs Load事件

在几个在线示例中我发现了这个: public partial class ForecastPage : PhoneApplicationPage { Forecast forecast; public ForecastPage() { InitializeComponent(); } protected override void OnNavigatedTo(NavigationEventArgs e) { // code here } } 但在其他人中我发现使用了Load事件 public partial class Person : PhoneApplicationPage { private PersonViewModel _ViewModel; public Person() { InitializeComponent(); this.Loaded += new RoutedEventHandler(SearchView_Loaded); } void SearchView_Loaded(object sender, RoutedEventArgs e) { // code here […]

C#如何初始化WebService

是否有可能初始化WebService。 我正在搜索只在第一次调用WebService时运行的方法。 在.Net中有类似的东西吗?

变量初始化:直接还是在构造函数中?

可能重复: 最佳实践:在构造函数或声明中初始化类字段? 大多数时候,我看到了像这样初始化变量的方法 public class Test { private int myIntToInitalize; public Test() { myIntToInitalize = 10; } } 从我的角度来看,这是初始化变量的最常用方法。 书籍,博客以及.NET的内部实现中的大多数代码都与我的示例相同。 最近我看到人们直接进行初始化,所以没有在构造函数中设置值。 public class Test { private int myIntToInitalize = 10; } 从观点来看,初始化和声明变量或初始化构造函数中的变量没有区别。 除了最佳实践和代码行的长度,直接初始化变量的好处在哪里,是否存在细微差别?

在C#中处理“循环初始化”的其他方法

首先,我会说我同意goto语句在很大程度上与现代编程语言中的更高级别结构无关,并且在适当的替代品可用时不应使用。 我最近重新阅读了Steve McConnell的Code Complete原版,并忘记了他对常见编码问题的建议。 几年前,当我第一次开始时,我已经读过它,并且不认为我意识到配方会有多大用处。 编码问题如下:执行循环时,您经常需要执行循环的一部分来初始化状态,然后使用其他逻辑执行循环,并使用相同的初始化逻辑结束每个循环。 一个具体的例子是实现String.Join(delimiter,array)方法。 我想每个人第一个接受这个问题的都是这个。 假设append方法被定义为将参数添加到返回值。 bool isFirst = true; foreach (var element in array) { if (!isFirst) { append(delimiter); } else { isFirst = false; } append(element); } 注意:稍微优化一下就是删除else并将其放在循环的末尾。 赋值通常是单个指令并等效于else,并将基本块的数量减少1并增加主要部分的基本块大小。 结果是在每个循环中执行一个条件以确定是否应该添加分隔符。 我也看到并使用了其他处理这个常见循环问题的方法。 您可以先在循环外执行初始元素代码,然后从第二个元素到结尾执行循环。 您还可以将逻辑更改为始终将元素附加到分隔符,并且一旦完成循环,您只需删除添加的最后一个分隔符。 后一种解决方案往往是我更喜欢的解决方案,因为它不会复制任何代码。 如果初始化序列的逻辑发生变化,您不必记得在两个地方修复它。 然而,它需要额外的“工作”来做某事然后撤消它,至少导致额外的cpu周期,并且在许多情况下,例如我们的String.Join示例也需要额外的内存。 我兴奋地阅读这个结构 var enumerator = array.GetEnumerator(); if (enumerator.MoveNext()) { goto start; do { append(delimiter); start: […]

如何在C#中初始化结构

我有一些代码来初始化C#中的结构: namespace Practice { public struct Point { public int _x; public int _y; public int X { get { return _x; } set { _x = value; } } public int Y { get { return _y; } set { _y = value; } } public Point(int x, int y) { _x = x; […]

C#中的非初始化变量

我有以下代码: class Foo { public Foo() { Bar bar; if (null == bar) { } } } class Bar { } 代码专家已经看到这会给出错误。 在if语句之前可能没有初始化Bar。 所以现在我想知道:酒吧的价值是什么,不应该是空的吗? 它们不是设置为空吗? (空指针?)