gpt4 book ai didi

c# - 我应该用 get 声明我的抽象类的属性吗?放;?

转载 作者:行者123 更新时间:2023-11-30 19:13:52 24 4
gpt4 key购买 nike

我正在制作一个小程序,它将抓取我的硬盘驱动器并显示在给定驱动器中找到的文件列表。

我的想法是有一个基本的 File 类,并实现从 File.cs 类继承的 Picture.cs、Video.cs 和 Document.cs 类。

这是我的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace SharpLibrary_MediaManager
{
public abstract class File
{
public string name;
public string fileType;
public int size;
public DateTime creationDate;
public DateTime modificationDate;
}
}

我是否应该像这样声明每个属性的简写代码:

public string name { get; set; }

任何指导都会有所帮助。谢谢。 :)

编辑:

我的意思是从字面上替换这一行:

public string name;

用这一行:

public string name { get; set; }

最佳答案

首先,“属性”在这里不是正确的术语。当您声明一个定义了 get 和/或 set(正式名称为“访问器”)的类的成员时,您就是在定义一个属性。属性是公开私有(private)字段值的便捷方式,因为您可以向获取和设置机制添加逻辑。

其次,当您声明一个成员 name 时,您已经通过

public string name { get; set; } 

编译器会将其扩展为以下内容:

private string _name;
public string name {
get {
return _name;
}
set {
_name = value;
}
}

也就是说,编译器会自动为你创建一个支持字段并定义访问器。这些被称为“自动属性”(对人而言)1

第三,永远不要2公开公开字段。因此,如果您想将字符串 name 公开为公共(public)接口(interface)的一部分,最好将其作为属性公开。首先,它提供了更好的封装。其次,它可以在派生类中声明为虚拟的并被覆盖。第三,您可以拥有自定义逻辑。第四,您可以在属性的读写机制之间有不同级别的可访问性,但不能在字段上。

第四,根据公认的命名约定,公共(public)属性应命名为 CamelCase所以你应该更喜欢 Name 而不是 name

1:抱歉,我已经等了很长时间才开这个玩笑。

2:几乎没有。

关于c# - 我应该用 get 声明我的抽象类的属性吗?放;?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2204259/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com