Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使outputfile名称成为gdbName和常量字符串的组合?_C#_Arcobjects - Fatal编程技术网

C# 如何使outputfile名称成为gdbName和常量字符串的组合?

C# 如何使outputfile名称成为gdbName和常量字符串的组合?,c#,arcobjects,C#,Arcobjects,在开发按钮时,我希望按钮生成的输出文件具有一个预定义的名称,该名称包含一个常量字符串“PositionAccuracySamplePoints”和一个变量字符串,该字符串包含我的gdb名称的前15个字符 我不熟悉编码,在尝试调用gdbName变量时,我很难理解自己做错了什么。我确实认为它与我在方法外部定义的_gdbName值有关,即不获取方法内部给定的子字符串值 private static String _inputGdbPath = ("C:\\Users\\GMartin\\Doc

在开发按钮时,我希望按钮生成的输出文件具有一个预定义的名称,该名称包含一个常量字符串“PositionAccuracySamplePoints”和一个变量字符串,该字符串包含我的gdb名称的前15个字符

我不熟悉编码,在尝试调用gdbName变量时,我很难理解自己做错了什么。我确实认为它与我在方法外部定义的_gdbName值有关,即不获取方法内部给定的子字符串值

    private static String _inputGdbPath = ("C:\\Users\\GMartin\\Documents\\Entorno pruebas\\Datos_SEA\\SEA19_0308_07C_20190513.gdb");
    public static String _gdbName;

    public Salida(String gdbName)
    {

        GeodatabaseManage gdbManageInput = new GeodatabaseManage(_inputGdbPath);
        gdbName = _inputGdbPath;
        _gdbName = gdbName.Substring(gdbName.LastIndexOf('\\') + 15);

    }


    public string fcName = String.Format("PositionalAccuracySamplePoints" + " _ " + "{0}", _gdbName);
在这段代码中,我得到了一个NullValueReference异常,正如前面提到的,它与最后一行的_gdbName有关,没有得到内部的de _gdbName值,而是字符串的空值


提前感谢

您的代码似乎有一些问题。以下是根据您的分享,我可以看到的内容

  • 变量
    \u inputGdbPath
    从未赋值
  • 您正在从按钮执行构造函数内部的逻辑。它需要一个字符串
    gdbName
    ,您将其替换为
    \u inputGdbPath
    ,如第1项所述,该字符串从未分配
  • 您尝试基于
    \u inputGdbPath
    获取
    GeodatabaseManage
    ,该路径从未使用过,并且可能返回一些空引用,因为
    \u inputGdbPath
    为空
  • 构造函数中的最后一行是执行
    \u gdbName=gdbName.Substring(15)
    gdbName
    是接收到的参数,现在被(null)
    \u inputGdbPath
    替换。如果您只需要这个参数,您可以删除构造函数上的其余代码,只留下这一行
  • 您正在使用静态变量。不建议这样做,因为每个按钮都会尝试共享相同的
    \u inputGdbPath
    gdbName
  • 还有一点,但更多的是作为一种改进,您可以使用
    private set
    创建一个属性,并直接在构造函数内部赋值。通过这种方式,应用程序不会在每次您尝试获取字符串时进行字符串连接。当然,您可以改进字符串的格式

  • 我看不出您在哪里为_inputGdbPathLets分配了任何值,现在是这样的:公共静态字符串inputGdbPath=(“C:\\Users\\GMartin\\Documents\\Entorno pruebas\\Datos\u SEA\\SEA19\u 0308\u 07C\u 20190513.gdb”);在任何情况下,我都无法将外部值与内部值联系起来。我要么得到NullReferenceExecption,要么得到我的\u gdbName是空的(最终shp.的名称是“PositionAccuracySamplePoints”,但没有可能重复的代码)
    public string FcName { get; private set; }
    
    public Salida(string gdbName)
    {
        //GeodatabaseManage gdbManageInput = new GeodatabaseManage(_inputGdbPath);
        //gdbName = _inputGdbPath;
        //_gdbName = gdbName.Substring(15);
        FcName = string.Format("PositionalAccuracySamplePoints_{0}", gdbName.Substring(15));
    }