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