开发者

error CS0177: The out parameter 'Wx' must be assigned to before control leaves the current method

开发者 https://www.devze.com 2022-12-24 06:00 出处:网络
public class Form1 : System.Windows.Forms.Form { private void eachCornerPix (object sender, PaintEventArgs e, out float Wx, out float Wy, out float Vx, out float Vy)
public class Form1 : System.Windows.Forms.Form
{
    private void eachCornerPix (object sender, PaintEventArgs e, out float Wx, out float Wy, out float Vx, out float Vy)
    {
        Graphics g = this.CreateGraphics();
        Pen penBlu = new Pen(Color.Blue, 2);
        SolidBrush redBrush = new SolidBrush(Color.Red);
        int width = 2;    // 1 pixel wide in x
        int height = 2;
        float [] Wxc = {0.100f, 5.900f, 5.900f, 0.100f}; 
        float [] Wyc = {0.100f, 0.100f, 3.900f, 3.900f}; 
        for (int i = 0; i<3; i++)
        {
            Wx = Wxc[i];
            Wy = Wyc[i];
            Vx = ((Wx - WXmin)*((VXmax-VXmin)+VXmin)/(WXmax-WXmin));  
    Vy = ((Wy - WYmin)*(VYmax-VYmin)/(WYmax-WYmin)+VYmin); 
    Console.WriteLine("eachCornerPix Vx= {0}", Vx);
    Console.WriteLine("eachCornerPix Vy= {0}", Vy);
    g.FillRectangle(redBrush, Vx, Vy, width, height);
            g.Dispose();
        }
    }
}

Desired effect: Use the array values (Wxc, Wyc) and re-assign them to Wx and Wy. Then use Wx and Wy as components to calculate Vx and Vy. My end goal...once compile issues are resolved, is to pass each array value listed using this method. This should allow 4 xy point pairs to be plotted.

Errors:

pass1.cs(51,18): error CS0177: The out parameter 'Wx' must be assigned to before control leaves th开发者_如何学Goe current method
pass1.cs(51,18): error CS0177: The out parameter 'Wy' must be assigned to before control leaves the current method
pass1.cs(51,18): error CS0177: The out parameter 'Vx' must be assigned to before control leaves the current method
pass1.cs(51,18): error CS0177: The out parameter 'Vy' must be assigned to before control leaves the current method


I think the error message is pretty self-explanatory. Just put

Wx = Wy = 0;
Vx = Vy = 0;

at the top of the method. I can see from your logic that the code is guaranteed to set the values to something before returning, but the static analysis that the compiler uses to determine that is relatively simple and is sometimes a little pessimistic.


Put this at the beginning of your method:

Wx = 0f;
Wy = 0f;
Vx = 0f;
Vy = 0f;
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号