1

我是 C# 新手,在 CMS 中写过一些东西,但我的背景主要与 JavaScript 相关。也就是说,我在 OpenText Capture Center 的“脚本”客户端工作。执行下面的代码时,我收到错误“当前上下文中不存在名称'srfOnly'”

如果我将变量声明移动到函数内,我会得到相同的错误,如果我将它们移动到全局,我会得到相同的错误,但在不同的行号上。

如何在整个代码中访问变量 srfOnly 和 otherDocs?

    //Parameters:
    //DataPool data
    //ITrace trace

    // Checking if condition is fulfilled.
    if (checkDocuments(data))
    {
       // Getting batch field named 'cc_SkipValidation'.
       // Setting new value.

       DOKuStar.Data.Xml.Bool skipValidationField = data.RootNode.Fields["cc_SkipValidation"] as DOKuStar.Data.Xml.Bool;
       bool srfOnly = false;
       bool otherDocs = false;

        if(otherDocs == true)
        {
             skipValidationField.SetValue(false);
        }
        if(srfOnly == true && otherDocs == false)
        {
             skipValidationField.SetValue(true);
          skipValidationField.State = DataState.Ok;
        }

    }
    // !!! Closing bracket is neccessary !!!
    }
    // ------------------ Functions
    public bool checkDocuments(DataPool dataPool)
    {
        foreach (Document doc in dataPool.RootNode.Documents)
        {
             if (doc.Name == "ServiceRequestForm")
             {
               srfOnly = true;
             }
             else if (doc.Name != "ServiceRequestForm")
             {
                 otherDocs = true;
             }
        }


    trace.WriteInfo("Trace info for Validation of srfOnly = " + srfOnly);
    trace.WriteInfo("Trace info for Validation of otherDocs = " + otherDocs);

    // !!! No closing bracket needed !!!
4

2 回答 2

2

变量的范围受限于它们在代码中的存在位置。如果您在 if{} 块中声明变量,则该变量仅存在于该块中。如果您在类内部而不是在类方法中声明变量,则该变量可以被类中的每个方法访问。如果您希望项目中的每个类都可以访问变量,通常会在公共静态类中声明它。

例如...

public static class GlobalClass
{
    public static string myGlobal="";    
}  

class myClass
{
    string myClassVariable = "";
    private void method()
    {
        //myGlobal is accessible using this
        GlobalClass.myGlobal ="some value";
        //myClassVariable is accessible here
        myClassVariable = "somevalue";
        if(condition)
        {
            //myClassVariable is also accessible here
            myClassVariable = "somevalue";
            string ifBlockVariable = "";
        }
        //ifBlockVariable is not accessible here
    }
}
于 2018-10-04T20:55:22.617 回答
0

变量只能在当前块(以及该块中的块)内访问。如果要访问srfOnlycheckDocuments 方法中的变量,可以将其作为参数传递:

public bool checkDocuments(DataPool dataPool, bool srfOnly)

如果您希望变量可以从类中的任何位置访问,您可以将其声明为类的属性或实例变量,如下所示:

private bool _srfOnly;

于 2018-10-04T20:48:34.297 回答