Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/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# 如何在类文件中创建本地参数类并传递参数并在form1中使用它们?_C# - Fatal编程技术网

C# 如何在类文件中创建本地参数类并传递参数并在form1中使用它们?

C# 如何在类文件中创建本地参数类并传递参数并在form1中使用它们?,c#,C#,例如,在类文件中: public class DoSomething { public string test { get; set; } public string test1 { get; set; } public int test2 { get; set; } public int test3 { get; set; } // others } if (stringProgressReport[1] == "Uploading") 然后: 不知何故,要将

例如,在类文件中:

public class DoSomething
{
   public string test { get; set; }
   public string test1 { get; set; }
   public int test2 { get; set; }
   public int test3 { get; set; }
   // others
}
if (stringProgressReport[1] == "Uploading")
然后:

不知何故,要将整型的fileuploadpercentage分配给test2或test3,将fileuploadstatus分配给test1,然后以表格1的形式分配:

if (request.QueryString[0] == "uploadstatus")
                {
                    switch (Youtube_Uploader.fileuploadstatus)
                    {
                        case "uploading file":
                            return "uploading";

                        case "status":
                            return Youtube_Uploader.fileuploadpercentages.ToString();

                        case "file uploaded successfully":
                            Youtube_Uploader.fileuploadstatus = "";
                            return "upload completed";

                        default:
                            return "upload unknown state";
                    }
return new Youtube_Uploader.UploadStatus(Youtube_Uploader.fileuploadpercentages);
可能不使用switch case,但不知何故,它将返回test1和test2,因此如果在类文件中:

public class DoSomething
{
   public string test { get; set; }
   public string test1 { get; set; }
   public int test2 { get; set; }
   public int test3 { get; set; }
   // others
}
if (stringProgressReport[1] == "Uploading")
同时返回test1和test2。两个参数,但在“上载”时返回

到目前为止,我尝试的是:

在新表格中,我添加了以下内容:

public enum UploadState
{
    Uploading,
    InProgress,
    Completed,
    Unknown
}

public class UploadStatus
{
    public UploadState State { get; private set; }
    public int Progress { get; private set; }

    public UploadStatus(UploadState state)
    {
        State = state;
    }

    public UploadStatus(int progress)
    {
        Progress = progress;
        State = UploadState.InProgress;
    }
}
现在,在这个新的表单中有两个事件,我如何在UploadState类的事件中使用它们

第一件事:

public static string uploadstatus = "";
        private void videosInsertRequest_ResponseReceived(Video obj)
        {
            uploadstatus = obj.Status.UploadStatus;
            if (uploadstatus == "uploaded")
            {
                //fileuploadstatus = new UploadStatus("file uploaded successfully");
            }
第二项活动:

private void videosInsertRequest_ProgressChanged(IUploadProgress obj)
        {
            stringProgressReport[1] = obj.Status.ToString();
            if (stringProgressReport[1] == "Uploading")
            {

                //percentComplete = (int)Math.Round(((double)obj.BytesSent) / totalBytes * 100);
                //fileuploadstatus = "status";
                //fileuploadpercentages = new UploadStatus((int)Math.Round(((double)obj.BytesSent) / totalBytes * 100));

                //fileuploadstatus = new UploadStatus("uploading file");// + fileuploadpercentages;
            }
同样在form1中,在所有的返回中,我都会遇到错误:

错误1无法将类型“Automatic_Record.Youtube_Uploader.UploadStatus”隐式转换为“string”

case "uploading file":
                            return new Youtube_Uploader.UploadStatus(Youtube_Uploader.UploadState.Uploading);

                        case "status":
                            return new Youtube_Uploader.UploadStatus(Youtube_Uploader.fileuploadpercentages);

                        case "file uploaded successfully":
                            Youtube_Uploader.fileuploadstatus = "";
                            return new Youtube_Uploader.UploadStatus(Youtube_Uploader.UploadState.Completed);

                        default:
                            return new Youtube_Uploader.UploadStatus(Youtube_Uploader.UploadState.Unknown);
每次返回时都会出现相同的错误,无法转换为字符串

同样在表格1的这一行中:

if (request.QueryString[0] == "uploadstatus")
                {
                    switch (Youtube_Uploader.fileuploadstatus)
                    {
                        case "uploading file":
                            return "uploading";

                        case "status":
                            return Youtube_Uploader.fileuploadpercentages.ToString();

                        case "file uploaded successfully":
                            Youtube_Uploader.fileuploadstatus = "";
                            return "upload completed";

                        default:
                            return "upload unknown state";
                    }
return new Youtube_Uploader.UploadStatus(Youtube_Uploader.fileuploadpercentages);
我得到的结果也是错误:


错误3参数1:无法从“Automatic\u Record.Youtube\u Uploader.UploadStatus”转换为“Automatic\u Record.Youtube\u Uploader.UploadState”

创建一个类来保存您的信息:

public enum UploadState
{
    Uploading,
    InProgress,
    Completed,
    Unknown
}

public class UploadStatus
{
    public UploadState State { get; private set; }
    public int Progress { get; private set; }

    public UploadStatus(UploadState state)
    {
        State = state;
    }

    public UploadStatus(int progress)
    {
        Progress = progress;
        State = UploadState.InProgress;
    }
}
您可以返回该类的实例:

if (request.QueryString[0] == "uploadstatus")
{
    switch (Youtube_Uploader.fileuploadstatus)
    {
        case "uploading file":
            return new UploadStatus(UploadState.Uploading);

        case "status":
            return new UploadStatus(Youtube_Uploader.fileuploadpercentages);

        case "file uploaded successfully":
            Youtube_Uploader.fileuploadstatus = "";
            return new UploadStatus(UploadState.Completed);

        default:
            return new UploadStatus(UploadState.Unknown);
     }
}

然后,您可以检查返回的
UploadStatus
实例,并相应地设置
test1
ans
test2
值。

首先,使用字符串常量描述对象或程序的状态被认为是一种非常糟糕的做法。你应该改用

其次,如果您想返回几个参数,您可以根据需要通过以下几种方式执行:

  • 创建一个
    struct
    ,将它们保存在单个对象中。您将不得不写一些行,但生成的代码将或多或少清晰
  • 返回一个。这并不需要大量的写作,但我个人讨厌记住
    Item1
    Item2
    的意图。但如果你仍然认为你想使用它
  • 这很少是一个好的决定,但它在类似a的代码中确实有帮助

  • 也许使用一个元组来返回两个值?你能告诉我如何使用一个对象结构吗?@Danielvanwolf这就像@DamirArh建议的那样,但我宁愿使用
    struct
    而不是
    class
    ,因为你的代码片段很可能是mathes Damir我将类添加到我的类文件中的。但是如何为int和string创建实例?在类文件中,我将您的类添加到此IF:IF(stringProgressReport[1]=“UploadStatus uploadstat=new UploadStatus((int)Math.Round((double)obj.BytesSent)/totalBytes*100)中,我该怎么办;我需要创建两个UploadStatus实例吗?@Danielvanwolf你所做的应该可以。为什么需要两个实例?如果需要显式地设置字符串和int参数,可以添加另一个构造函数。另外,正如bashis所提到的,用enum替换字符串是个好主意。Damir我更新了我的问题,只是在底部添加了一个,这是我现在尝试的部分。请你看一下,因为它还不起作用。我做错了什么?在解决了这个问题之后,如果你能告诉我如何使用enum,请告诉我?@DanielLip我在这个问题中没有看到任何编辑!?我已经更新了答案,使用枚举而不是字符串。