您的位置:首页 > 科技 > IT业 > 本科自考哪个专业比较好考_游戏试玩平台代理_搜索引擎优化代理_网站搜索排名靠前

本科自考哪个专业比较好考_游戏试玩平台代理_搜索引擎优化代理_网站搜索排名靠前

2024/12/28 8:57:28 来源:https://blog.csdn.net/m0_72813396/article/details/144572174  浏览:    关键词:本科自考哪个专业比较好考_游戏试玩平台代理_搜索引擎优化代理_网站搜索排名靠前
本科自考哪个专业比较好考_游戏试玩平台代理_搜索引擎优化代理_网站搜索排名靠前
带 init 访问器的对象初始值设定项

确保无人更改设计,并且可以使用访问器来限制 init 对象。 它有助于限制属性值的设置。

public class Person
{public string FirstName { get; set; }public string LastName { get; init; }
}// The `LastName` property can be set only during initialization. It CAN'T be modified afterwards.
// The `FirstName` property can be modified after initialization.
var pet = new Person() { FirstName = "Joe", LastName = "Doe"};// You can assign the FirstName property to a different value.
pet.FirstName = "Jane";// Compiler error:
// Error CS8852  Init - only property or indexer 'Person.LastName' can only be assigned in an object initializer,
//               or on 'this' or 'base' in an instance constructor or an 'init' accessor.
// pet.LastName = "Kowalski";

必需的仅限 init 的属性支持不可变结构,同时允许该类型用户使用自然语法。

具有类类型属性的对象初始值设定项

初始化对象时,考虑类类型属性的含义至关重要:

public class HowToClassTypedInitializer
{public class EmbeddedClassTypeA{public int I { get; set; }public bool B { get; set; }public string S { get; set; }public EmbeddedClassTypeB ClassB { get; set; }public override string ToString() => $"{I}|{B}|{S}|||{ClassB}";public EmbeddedClassTypeA(){Console.WriteLine($"Entering EmbeddedClassTypeA constructor. Values are: {this}");I = 3;B = true;S = "abc";ClassB = new() { BB = true, BI = 43 };Console.WriteLine($"Exiting EmbeddedClassTypeA constructor. Values are: {this})");}}public class EmbeddedClassTypeB{public int BI { get; set; }public bool BB { get; set; }public string BS { get; set; }public override string ToString() => $"{BI}|{BB}|{BS}";public EmbeddedClassTypeB(){Console.WriteLine($"Entering EmbeddedClassTypeB constructor. Values are: {this}");BI = 23;BB = false;BS = "BBBabc";Console.WriteLine($"Exiting EmbeddedClassTypeB constructor. Values are: {this})");}}public static void Main(){var a = new EmbeddedClassTypeA{I = 103,B = false,ClassB = { BI = 100003 }};Console.WriteLine($"After initializing EmbeddedClassTypeA: {a}");var a2 = new EmbeddedClassTypeA{I = 103,B = false,ClassB = new() { BI = 100003 } //New instance};Console.WriteLine($"After initializing EmbeddedClassTypeA a2: {a2}");}// Output://Entering EmbeddedClassTypeA constructor Values are: 0|False||||//Entering EmbeddedClassTypeB constructor Values are: 0|False|//Exiting EmbeddedClassTypeB constructor Values are: 23|False|BBBabc)//Exiting EmbeddedClassTypeA constructor Values are: 3|True|abc|||43|True|BBBabc)//After initializing EmbeddedClassTypeA: 103|False|abc|||100003|True|BBBabc//Entering EmbeddedClassTypeA constructor Values are: 0|False||||//Entering EmbeddedClassTypeB constructor Values are: 0|False|//Exiting EmbeddedClassTypeB constructor Values are: 23|False|BBBabc)//Exiting EmbeddedClassTypeA constructor Values are: 3|True|abc|||43|True|BBBabc)//Entering EmbeddedClassTypeB constructor Values are: 0|False|//Exiting EmbeddedClassTypeB constructor Values are: 23|False|BBBabc)//After initializing EmbeddedClassTypeA a2: 103|False|abc|||100003|False|BBBabc
}

以下示例演示了对于 ClassB,初始化过程如何涉及到更新特定的值,同时保留原始实例中的其他值。 初始值设定项重用当前实例:ClassB 的值为:100003(此处分配的新值)、true(在 EmbeddedClassTypeA 的初始化中保留的值)、BBBabc(EmbeddedClassTypeB 中未更改的默认值)。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com