0

基本クラスとそのサブクラスで使用されるいくつかの定数を定義する必要があります。それらを定義する正しい方法が何であるかわかりません。

const、readonly、static const、および public、protected、private の違いを理解しています (ただし、C# で "protected" が使用されることはめったにありません)。これらの定数はどのように定義する必要がありますか? public const、public readonly、private constant、private readonly のいずれかで、使用するサブクラスに public getter/setter を使用する必要がありますか、それとも保護として定義する必要がありますか?

別の質問は、BaseClass の変数 FilePath に関するものです。FilePath は、BaseClass の一部の関数でプレースホルダーとして使用されます (実際の値はサブクラスによって提供されます)。それを仮想として定義する必要がありますか?

誰かが従うべき一般的なルールを提供できますか? 以下は私が持っているものの例です:

public class BaseClass
{
    public const string Country = "USA";
    public const string State = "California";
    public const string City = "San Francisco";

    public virtual string FilePath
    {
        get
        {
            throw new NotImplementedException();
        }
         set
        {
            throw new NotImplementedException();
        }
    }
}

public class Class1 : BaseClass {

     public Class1() {
         FilPath = "C:\test";
     }

     public string GetAddress() {
       return City + ", " + State + ", " + Country; 
     }

     public void CreateFile() {
       if (!Directory.Exist(FilePath)) {
            //create folder, etc 
        }
     }         
}
4

2 に答える 2

3

定数を次のように定義できる場合はconst、そうしてください。それが不可能な場合は、 を使用してstatic readonlyください。

定数をクラス外で使用する場合は、internalまたはである必要がありますpublic。基本クラスとその子孫のみがそれらを使用する場合は、それらを作成しますprotected

FilePath サブクラスで提供できる場合、それは でなければなりませんvirtual。サブクラスで提供する必要がある場合は、 abstract.

于 2013-01-11T23:29:38.170 に答える
0

BaseClass を抽象クラスにします ( http://msdn.microsoft.com/en-us/library/sf985hc5(v=vs.71).aspxを参照)。const と static readonly に関しては、主に好みの問題です。

public abstract class BaseClass
{
    // ... constant definitions

    // Members that must be implemented by subclasses
    public abstract string FilePath { get; set; }
}
于 2013-01-11T23:29:23.707 に答える