0

次のような設定クラスがあります。

public class Settings
{
    string resourcePath;
    public string ResourcePath {
        get {
            return resourcePath + "/";
        }
        set {
            resourcePath = value;
        }
    }

    string texturePath;
    public string TexturePath {
        get {
            string a = resourcePath + "/"; // This is just some debug stuff I did trying to find out wtf is going on
            string b = texturePath + "/";
            return a + b; // Breakpointing here shows that it is "Content/Textures/"
        }
        set {
            texturePath = value;
        }
    }

    public Settings ()
    {
        resourcePath = "Content";
        texturePath = "Textures";
    }

    public static Settings CurrentSettings = new Settings();
}

次に、次のように、そこから TexturePath を取得しようとします。

string path = Settings.CurrentSettings.TexturePath + file;

プロパティによって返される文字列は"Content//Content/Textures//"

ここで何が欠けていますか?なぜそれをするのですか?私の知る限り、それは戻るはずですContent/Textures/

4

3 に答える 3

3

Path.Combineを使用してパスを操作します。

string path = Path.Combine(Settings.CurrentSettings.TexturePath,file);

プロパティに「/」を追加する必要はありません。

public string ResourcePath {
    get {
        return resourcePath;
    }
    set {
        resourcePath = value;
    }
}
于 2013-09-14T16:11:55.140 に答える
2

/ゲッターとセッターのバランスが取れていない可能性があります。そして、おそらくいくつかのプロパティを取得してから、それを使用して別のプロパティを設定しているため、 が多すぎ/ます。

于 2013-09-14T16:08:29.963 に答える
1

報告した結果を生成するコードは表示されていませんが、次のコードは非常に疑わしいものです。

string resourcePath;
public string ResourcePath {
    get {
        return resourcePath + "/";
    }
    set {
        resourcePath = value;
    }
}

ゲッターには常にスラッシュが追加されますが、セッターでは削除されません。したがって、次のコード:

x.ResourcePath = "abc";
x.ResourcePath = x.ResourcePath + "/def";
x.ResourcePath = x.ResourcePath + "/ghi";

ResourcePath「abc//def//ghi」に設定します。

私はあなたがそのようなことに出くわしている疑いがあります。

于 2013-09-14T16:12:11.570 に答える