עבור לתוכן

C#: בנאי שלא מקבל פרמטרים - אפשרי ?

Featured Replies

פורסם

אני אמור לכתוב תוכנית שמתפקדת כ-Log כלומר כותבת את ההודעות לקובץ ושומרת, כמובן שהקובץ אמור לאגור את ההודעות גם אחרי שהתוכנית נסגרת, כתבתי משהו שעובד אבל אני לא בטוח שמותר לי לעשות ככה והאם לכך התכוונו וכמו כן איך אני אמור להתשמש במתודת ה-Dispose שנכתבה לי לאחר שה-Class שלי ירש מ-IDisposable:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Collections;


namespace Log
{
public class Log : IDisposable
{
public string Msg;


public Log()
{

}


public string PrintMessage()
{
return DateTime.Now + "Message: " + this.Msg;
}


public string GetMessage(int num)
{
return "t";
}


public void AddMessage(string msg)
{
FileStream fs1 = new FileStream("LOG.txt", FileMode.Append, FileAccess.Write);
StreamWriter sw1 = new StreamWriter(fs1);
this.Msg = msg;
sw1.WriteLine(DateTime.Now + " " + "Message: " + this.Msg);
sw1.Close();
}


public void Dispose()
{

}
}


class Program
{
static void Main(string[] args)
{
Log log1 = new Log();
Console.WriteLine("Enter Text: ");
string input = Console.ReadLine();


while (input != "0")
{
log1.AddMessage(input);
input = Console.ReadLine();
}


Console.ReadLine();
}
}
}

פורסם

מה זאת אומרת "מותר"? אם זה מתקמפל, זה מותר (יכול להיות שזה לא מומלץ, אבל זה כבר סיפור אחר). אין שום בעיה לעשות בנאי שלא מקבל פרמטרים. שים לב שאם למחלקה שלך אין שום בנאים בכלל, אוטומטית נוצר לה בנאי ריק שלא מקבל פרמטרים (בדיוק כמו שאתה עשית), ככה שהבנאי שלך לא נחוץ.

לגבי IDisposable, אתה צריך לדעת איך ומתי אמורים לממש אותו... במשפט אחד - המחלקה שלך צריכה להיות IDisposable רק אם יש לה איברים (members) שצריך לעשות להם Dispose בסוף השימוש (או פונקציה שקולה ל-Dispose). במקרה שלך אין למחלקה שום איבר כזה.

חוץ מזה, כשבאמת תצטרך לממש IDisposable, קרא מה שכאן:

http://msdn.microsoft.com/en-us/library/fs2xkftw.aspx

פורסם
  • מחבר

תודה רבה

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים