![]() |
1
11
你不能用C#做这个。 这个特性是VB特有的,在C中最接近的就是你描述的对象初始化器。 |
![]() |
2
6
这个怎么样?
|
![]() |
3
3
如果您试图避免大量键入,可以为对象指定一个较短的名称:
|
![]() |
4
3
|
![]() |
5
1
为了向后兼容,VB.NET包含了VB6的一些设计缺陷。尽管Javascript也有同样的设计缺陷(事实上更糟的是
|
![]() |
6
1
@Mark Byers answer
很好,但是变量
试试这个( 对象必须是此示例中的引用类型 ) :
|
![]() |
7
0
如果“with”表达式是类类型,“with”语句相当于创建该类型的新临时变量,初始化为“with”表达式,并在每个前导“.”之前加上该变量。然而,如果它是一种结构类型,事情就更复杂了。考虑一下代码(显然不是人们通常写东西的方式,而是为了表明一点: With MyPoints(N) ' Array of Point N=SomeNewValue .X = MyPoints(N).X .Y = MyPoints(N).Y End With “With”语句有效地锁定对MyPoints(N)的引用。即使MyPoints被更改为其他数组,或者N被更改,锁存引用仍将指向同一数组的同一元素,就像执行With语句时一样。如果一个声明了Point类型的局部变量P并获取MyPoints(N),然后写入P.X和P.Y,则写入操作只会命中本地副本P,而不是更新数组。要在C#中实现类似的语义,必须使用局部变量来保存MyPoints和N,或者将With语句的内容放在一个匿名函数中,该函数具有类型Point的ref参数。为了避免在运行时创建闭包,匿名函数还应该(可能是通过引用)从外部作用域接受它需要的任何局部变量。 |
![]() |
A B · C#Excel自动调整列避免长文本时出错 6 月前 |
![]() |
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 6 月前 |
![]() |
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 6 月前 |
|
Sei · Avalonia/WPF将路由器传递到控制模板 7 月前 |