Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.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/5/google-sheets/3.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# 通过C中的ref传递的参数#_C#_Methods_Ref - Fatal编程技术网

C# 通过C中的ref传递的参数#

C# 通过C中的ref传递的参数#,c#,methods,ref,C#,Methods,Ref,我是编程新手,现在我正在做一些练习,但是,我不能完成一项任务(或者我不理解),我被困在第三位,你能帮我吗? 以下是练习和我的代码: (1) 应该有一个单独的转换方法 (2) 应该有一个名为ConvertSecondsToHoursMinuteSeconds的单独方法 (3) 应该有一个按值传递的int参数和三个int参数 被引用通过 (4) 应正确地将秒转换为小时、分钟和秒 public partial class MainWindow : Window { public MainW

我是编程新手,现在我正在做一些练习,但是,我不能完成一项任务(或者我不理解),我被困在第三位,你能帮我吗? 以下是练习和我的代码:

(1) 应该有一个单独的转换方法

(2) 应该有一个名为ConvertSecondsToHoursMinuteSeconds的单独方法

(3) 应该有一个按值传递的int参数和三个int参数 被引用通过

(4) 应正确地将秒转换为小时、分钟和秒

  public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();

    }

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        conversion();
    }
    private void ConvertSecondsToHoursMinutesSecondsMethod(long totalSeconds) 
    {
        long hours, mins, secs, v;

        hours = totalSeconds / 3600;
        v = totalSeconds % 3600;
        mins = v / 60;
        secs = v % 60;
    }
    private void conversion(ref long hours, ref long secs, ref long mins)

    {
        long seconds = Convert.ToInt64(userInputLabel.Text);
        ConvertSecondsToHoursMinutesSecondsMethod(seconds);

        outputLabel.Content = $"{hours} {mins} {secs}";


    }
}

您需要将接收到的ref参数传递给正在调用的另一个方法,以便它们接收正确的值。一旦方法返回,局部变量通常不存在

private void ConvertSecondsToHoursMinutesSecondsMethod(long totalSeconds, ref long secs, ref long mins) 
{
    hours = totalSeconds / 3600;
    long v = totalSeconds % 3600;
    mins = v / 60;
    secs = v % 60;
}

private void conversion()
{
    long hours, secs, mins;
    long seconds = Convert.ToInt64(userInputLabel.Text);
    ConvertSecondsToHoursMinutesSecondsMethod(seconds, ref hours, ref secs, ref mins);

    outputLabel.Content = $"{hours} {mins} {secs}";
}
试试这个

还可以查看使用ref的正确方法

public MainWindow()
{
    InitializeComponent();

}

private void Button_Click(object sender, RoutedEventArgs e)
{
    Conversion();
}
private void ConvertSecondsToHoursMinutesSecondsMethod(int totalSeconds, ref long hours, ref long secs, ref long min)
{
    long v;
    hours = totalSeconds / 3600;
    v = totalSeconds % 3600;
    min = v / 60;
    secs = v % 60;
}
private void Conversion()
{
    long hours = 0;
    long secs = 0;
    long mins = 0;
    int seconds = Convert.ToInt32(userInputLabel.Text);

    ConvertSecondsToHoursMinutesSecondsMethod(seconds, ref hours, ref mins, ref secs);

    outputLabel.Content = $"{hours} {mins} {secs}";
}

我也觉得缺少了一些东西,比如问题陈述或上下文解释。这是作业的全部内容吗?是的,这是作业的全部内容,因为我认为最好在这里鼓励最佳实践,并使用
DateTime
库和/或其他平台类进行时间处理,根据OP的问题,您将
totalSeconds/seconds
long/Int64
更改为
int/Int32
,原因是什么。(3) 应该有一个int参数通过valueWell传递,它还表示
和三个*int*参数通过ref传递,但是您保留了很长的时间,非常感谢!我现在明白了