עבור לתוכן

Class שיורש מ-StreamReader

Featured Replies

פורסם

בשפת C#

יש לי תרגיל שבו אני אמור לרשום Class שיורש מ-StreamReader עלמנת לקרוא כל פעם תו בודד, התחלתי לרשום אותו אבל אני מקבל שגיאת קומפילציה שאומרת 'System.IO.StreamReader' does not contain a constructor that takes 0 arguments שאין לי מושג מה זה אומר, זה ה-Class שלי (רק התחלתי לרשום אותו והשגיאה היא על שם ה-Class):

  public class BabyStreamReader : StreamReader
{
public int ReadNextInt()
{
return 1;
}
}

פורסם
  • מחבר

עשיתי משהו אבל יש לי בעיה, כשאני בודק עם הדיבגר אני רוצה לראות למשל את השורה שהכנסתי בקובץ טקסט (ממנו אמורה לקרוא התוכנית) אבל אני רואה שלא נכנס למשתנה LINE הנתונים הנכונים (הכנסתי 5 תוים רצופים ויש לי בדיבגר 8), אני רוצה להבין את רושמים את ה-CLASS באופן נכון ואיך רושמים ככה שיקרא מקובץ הטקט:

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


namespace T380
{
public class BabyStreamReader : StreamReader
{
public string line;


public BabyStreamReader(string line = (@"D:\C#\ConsoleApplication1\Classes\T380\bin\Debug\File.txt"))
: base(@"D:\C#\ConsoleApplication1\Classes\T380\bin\Debug\File.txt")
{
this.line = line;
}


public int ReadNextInt()
{
char c = (char)0;

for (int i = 0; i < line.Length; i++)
{
c = line[i];
}


return c;
}
}


class Program
{
static void Main(string[] args)
{
BabyStreamReader InputFile = new BabyStreamReader(@"D:\C#\ConsoleApplication1\Classes\T380\bin\Debug\File.txt");


while (!InputFile.EndOfStream)
{
int num = InputFile.ReadNextInt();
Console.WriteLine(num);
}


Console.ReadLine();
}
}
}

פורסם

מה אמורה לומר השורה הזו:


public BabyStreamReader(char (@"D:\C#\ConsoleApplication1\Classes\T380\bin\Debug\File.txt"))

??

לא ככה מגדירים constructor.

פורסם
  • מחבר

הוספתי תיקון אבל עדיין יש לי בעיה בהגדרה הראשונית של הקלאס, אני לא יודע איך לרשום את זה נכון, אשמח להסבר.

פורסם

לא ברור לי מה אתה מנסה לעשות כאן. מה התפקיד של line? איפה אתה משתמש בכלל במתודות של StreamReader?

פורסם
  • מחבר

אני לא ממש יודע איך לרשת מ-STREAMREADER אז חירבשתי משהו (שברור לי עכשיו שהוא לא טוב)

אני אמור לרשום קלאס שיורש מ-STREAMREADER וקורא כל פעם תו תו ומדפיס אותו (לא מדפיס בדיוק את כל התוים בנפרד אבל זה כבר לא חשוב כרגע)

פורסם
  • מחבר

כן, יש לי כבר תרגיל שבו אני משתמש בו

פורסם
  • מחבר

אני חייב פה בתרגיל קונסטרקטור ?

האם מה שרשמתי פה נכון : (מתודה אחת בלבד בלי קונסטרקטור)

אני שפוט רוצה לקרוא כל פעם תו אחד מקובץ טקסט ולטפל בו

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


namespace T380
{
public class BabyStreamReader : StreamReader
{
public int ReadNextInt()
{



return 1;
}
}


class Program
{
static void Main(string[] args)
{


}
}
}

פורסם
  • מחבר

עריכה:

התחלתי לכתוב מחדש והקונסטרקטור אני חושב אולי אני צריך לתת לו את הנתיב של בקובץ ככה: (למה הוא אומר לי identifier expected ?)

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


namespace T380
{
public class BabyStreamReader : StreamReader
{
public BabyStreamReader(string @"D:\C#\ConsoleApplication1\Classes\T380\bin\Debug\File.txt");
{

}


public int ReadNextInt()
{

return 1;
}
}

פורסם

אם אתה לא יודע מה זה עושה, זה אומר שלא הבנת נכון מה זה בכלל בנאי (constructor) ואתה צריך לחזור שוב על החומר.

פורסם
  • מחבר

אני מבין אבל עד עכשיו עבדתי עם קונסטרקטורים בלי קובץ חיצוני ועכשיו אני לא מבין את הוא אמור להיכנס לתוכנית

פורסם

מה זה "קובץ חיצוני"?

תחזור שוב על קונסטרקטורים.

תחזור שוב על ירושה.

ותחזור שוב על קונסטרקטורים בירושה.

פורסם
  • מחבר

חזרתי וקראתי קצת אבל עדיין זה לא יושב לי טוב, יש מצב שאתה עוזר לי רק עם ה-constructor ?

עריכה:

אני יכול לרשום דבר כזה ?

  public class BabyStreamReader : StreamReader
{




public BabyStreamReader(string Path)
{


}




איך אני בדיוק מכניס את ה-PATH לתוך האובייקט ?

פורסם

כן, אתה יכול לרשום דבר כזה, אבל ככה הירושה שלך לא שווה כלום.

כשאתה תיצור אובייקט חדש מסוג BabyStreamReader אתה תכניס את הערך הזה. לדוג'


BabyStreamReader Reader=new BabyStreamReader(@"C:\blabla\blalas.txt")

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

ארכיון

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

דיונים חדשים